GraphQL - GraphQL
| Udvikler (er) | Facebook og fællesskab |
|---|---|
| Første udgivelse | 14. september 2015 |
| Stabil udgivelse | Juni 2018
|
| Depot | github |
| Skrevet i | Implementeringer i Java , JavaScript , Ruby , Scala , andre. |
| Operativ system | På tværs af platforme |
| Internet side | graphql |
GraphQL er en open-source data forespørgsel og manipulation sprog for API'er , og en runtime for at opfylde forespørgsler med eksisterende data. GraphQL blev udviklet internt af Facebook i 2012, inden det blev offentliggjort offentligt i 2015. Den 7. november 2018 blev GraphQL-projektet flyttet fra Facebook til det nyoprettede GraphQL Foundation, hostet af non-profit Linux Foundation . Siden 2012 har GraphQLs stigning fulgt adoptionstidslinjen som angivet af Lee Byron, GraphQLs skaber, med nøjagtighed. Byrons mål er at gøre GraphQL allestedsnærværende på tværs af webplatforme.
Det giver en tilgang til udvikling af web -API'er og er blevet sammenlignet og kontrasteret med REST og andre webtjenestearkitekturer . Det giver klienter mulighed for at definere strukturen af de krævede data, og den samme struktur af data returneres fra serveren, hvilket forhindrer, at alt for store mængder data returneres, men dette har konsekvenser for, hvor effektiv webcaching af forespørgselsresultater kan være . Spørgsmålssprogets fleksibilitet og rigdom tilføjer også kompleksitet, der måske ikke kan betale sig for simple API'er. På trods af navnet giver GraphQL ikke den rigdom af grafoperationer, som man kan finde i en fuldgyldig grafdatabase som Neo4j , eller endda i dialekter af SQL, der understøtter transitiv lukning . For eksempel kan en GraphQL -grænseflade, der rapporterer forældrene til et individ, ikke i en enkelt forespørgsel returnere alle deres forfædres sæt.
GraphQL består af et typesystem, forespørgselssprog og eksekveringssemantik, statisk validering og typeintrospektion . Det understøtter læsning, skrivning (mutation) og abonnering på ændringer af data (opdateringer i realtid - oftest implementeret ved hjælp af Websockets ). GraphQL -servere er tilgængelige til flere sprog, herunder Haskell , JavaScript , Perl , Python , Ruby , Java , C ++ , C# , Scala , Go , Rust , Elixir , Erlang , PHP , R , D og Clojure .
Den 9. februar 2018 blev GraphQL Schema Definition Language (SDL) en del af specifikationen.
Eksempel
POST anmodning:
{
orders {
id
productsList {
product {
name
price
}
quantity
}
totalAmount
}
}
Respons:
{
"data": {
"orders": [
{
"id": 1,
"productsList": [
{
"product": {
"name": "orange",
"price": 1.5
},
"quantity": 100
}
],
"totalAmount": 150
}
]
}
}
Se også
Referencer
eksterne links