GraphQL
From Wikipedia, the free encyclopedia
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]
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
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads