GraphQL - GraphQL

GraphQL
Logo GraphQL.svg
Dezvoltatori Facebook și comunitate
Eliberarea inițială 14 septembrie 2015 ( 14.09.2015 )
Versiune stabila
Iunie 2018 ( 06-06-2018 )
Repertoriu github .com / graphql / graphql-spec
Scris in Implementări în Java , JavaScript , Ruby , Scala , altele.
Sistem de operare Cross-platform
Site-ul web graphql .org

GraphQL este un limbaj de interogare și manipulare de date open-source pentru API-uri și un timp de rulare pentru îndeplinirea interogărilor cu date existente. GraphQL a fost dezvoltat intern de Facebook în 2012, înainte de a fi lansat public în 2015. La 7 noiembrie 2018, proiectul GraphQL a fost mutat de la Facebook la noua Fundație GraphQL, găzduită de Fundația Linux non-profit . Din 2012, creșterea GraphQL a urmat cu exactitate cronologia adoptării, așa cum a fost stabilită de Lee Byron, creatorul GraphQL. Scopul lui Byron este de a face GraphQL omniprezent pe toate platformele web.

Acesta oferă o abordare a dezvoltării API-urilor web și a fost comparat și contrastat cu REST și alte arhitecturi de servicii web . Permite clienților să definească structura datelor necesare, iar aceeași structură a datelor este returnată de la server, împiedicând astfel returnarea unor cantități excesiv de mari de date, dar acest lucru are implicații pentru cât de eficientă poate fi cache-ul web al rezultatelor interogării. . Flexibilitatea și bogăția limbajului de interogare adaugă, de asemenea, o complexitate care poate nu merită pentru API-urile simple. În ciuda numelui, GraphQL nu oferă bogăția operațiunilor grafice pe care le-ați putea găsi într-o bază de date cu drepturi depline, cum ar fi Neo4j , sau chiar în dialectele SQL care acceptă închiderea tranzitivă . De exemplu, o interfață GraphQL care raportează părinții unei persoane nu poate returna, într-o singură interogare, setul tuturor strămoșilor lor.

GraphQL constă dintr-un sistem de tip, limbaj de interogare și semantică de execuție, validare statică și introspecție de tip . Acceptă citirea, scrierea (mutarea) și abonarea la modificări ale datelor (actualizări în timp real - cel mai frecvent implementate folosind Websockets ). Serverele GraphQL sunt disponibile pentru mai multe limbi, inclusiv Haskell , JavaScript , Perl , Python , Ruby , Java , C ++ , C # , Scala , Go , Rust , Elixir , Erlang , PHP , R , D și Clojure .

Pe 9 februarie 2018, GraphQL Schema Definition Language (SDL) a devenit parte a specificației.

Exemplu

Cerere POST :

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

Raspuns:

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

Vezi si

Referințe

linkuri externe