GraphQL

From Wikipedia, the free encyclopedia

GraphQL
Remove ads

GraphQL er et språk tilgjengelig som åpen kildekode som er brukt til spørring og manipulering av programmeringsgrensesnitt, samt en kjøreomgivelse for å utføre spørringer mot eksisterende data.[1]

Kjappe fakta Utvikler(e), Utgitt ...
Remove ads

Historie

I 2012 ble GraphQL utviklet internt av Facebook, og i 2015 ble det gitt ut offentlig.[2] I 2018 ble GraphQL-prosjektet overført fra Facebook til den nyetablerte GraphQL Foundation i regi av den ideelle organisasjonen Linux Foundation.[3][4]

Siden 2012 har bruken av GraphQL økt tilnærmet likt adopsjonstidslinjen som ble angitt av Lee Byron, en av skaperne bak GraphQL.[5] Byrons mål var å gjøre GraphQL allestedsnærværende på tvers av webplattformer.

Den 9. februar 2018 ble GraphQL Schema Definition Language (SDL) en del av spesifikasjonen.[6]

Remove ads

Spesifikasjon av datastrukturer

GraphQL angir en tilnærming til å utvikle web-API-er, og har blitt sammenlignet med og opp mot REST og andre webtjeneste-arkitekturer. Den tillater klienter å definere strukturen til dataene som kreves, og den samme datastrukturen returneres fra serveren, hvilket forhindrer at store datamengder returneres. Dette har betydning for hvor effektivt man kan få resultater fra spørringer mot webhurtiglagre.

Remove ads

Eksempel

POST-forespørsel:

{
    orders {
        id
        productsList {
            product {
                name
                price
            }
            quantity
        }
        totalAmount
    }
}

Svar:

{
    "data": {
        "orders": [
            {
                "id": 1,
                "productsList": [
                    {
                        "product": {
                            "name": "orange",
                            "price": 1.5
                        },
                        "quantity": 100
                    }
                ],
                "totalAmount": 150
            }
        ]
    }
}

Oppbygning

GraphQL består av et typesystem, spørrespråk og utførelsessemantikk, statisk validering og typeintrospeksjon. Den støtter lesing, skriving (mutering) og abonnering på endringer i data (sanntidsoppdateringer), oftest implementert ved hjelp av WebSockets.[7] GraphQL-tjenere er tilgjengelige for flere språk inkludert Haskell, JavaScript,[8] Perl,[9] Python,[10] Ruby, Java, C++,[11] C#, Scala, Go, Rust, Elixir,[12] Erlang, PHP, R, D[13] og Clojure.

Remove ads

Alternativer

Fleksibiliteten og rikdommen i spørringsspråket legger også opp til en kompleksitet som kanskje ikke er verdt å ha for enkle API-er.[14][15][16] Til tross for navnet har ikke GraphQL mulighet for samme mengde av grafoperasjoner som en fullverdig grafdatabase, som for eksempel Neo4j eller enkelte dialekter av SQL som støtter transitiv lukking. Eksempelvis vil man med et GraphQL-grensesnitt som rapporterer foreldrene til et individ ikke kunne returnere mengden med alle disse sine forfedre i en enkelt spørring.

Remove ads

Se også

Referanser

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads