GraphQL: o alternativă la REST pe HTTP

GraphQL: o alternativă la REST pe HTTP

Există multe standarde arhitecturale open-source pentru construirea și distribuirea aplicațiilor. REST (Representational State Transfer), SOAP (Simple Object Access Protocol), RPC (Remote Procedural Call) și API-urile GraphQL sunt cele mai populare.





API-urile RESTful sunt cel mai folosit standard arhitectural API. Dacă ați scris API-uri RESTful complexe cu multe puncte finale, probabil v-ați dat seama cât de complicate pot fi. Acest lucru este valabil mai ales dacă există doar mici diferențe între punctele finale.





REALIZAREA VIDEOCLIPULUI ZILEI

De asemenea, puteți întâmpina probleme cu preluarea datelor, deoarece API-urile RESTful nu sunt suficient de flexibile pentru a selecta anumite date. GraphQL rezolvă aceste probleme ale API-urilor RESTful.





Ce este GraphQL?

GraphQL (Graph Query Language) este un limbaj de interogare și runtime pentru construirea de API-uri. Spre deosebire de API-urile REST cu multe puncte finale pentru consumarea datelor, API-urile GraphQL au un singur punct de intrare. Puteți obține date specifice descriindu-le în interogări.

The Specificația GraphQL definește limbajul de interogare și modul în care funcționează serverele GraphQL. Puteți construi și consuma API-uri GraphQL în limbaje de pe server, de la Python la Javascript și orice limbă care acceptă HTTP.



Meta a construit GraphQL în 2012 ca o alternativă la REST pentru construirea pe HTTP. Au lansat GraphQL ca standard open-source în 2015. Astăzi, fundația GraphQL supraveghează dezvoltarea specificației GraphQL.

GraphQL este destul de nou, cu adoptare scăzută și există costuri ascunse pentru utilizarea acestuia. Crearea API-urilor GraphQL poate fi inutil de complexă, mai ales pentru proiectele mici cu câteva puncte finale.





De asemenea, toate cererile GraphQL returnează în cele din urmă un cod de stare de 200, indiferent de starea cererii.

Cum funcționează GraphQL?

  GraphQL's functions and syntax

Spre deosebire de REST, care este orientat către resurse , GraphQL necesită să vă gândiți la date ca pe un grafic pentru a interacționa cu datele. Puteți specifica structura datelor, iar specificația oferă o interfață de interogare robustă pentru interacțiunea cu API-ul prin HTTP. Veți putea folosi diverse funcții în funcție de Pachetul sau bibliotecă GraphQL alegi să folosești.





cum să vectorizezi o siglă în ilustrator

Schemele GraphQL includ tipuri de obiecte care definesc obiectul solicitat și câmpurile sale disponibile. Pe interogările și mutațiile API, pachetul GraphQL validează interogările și execută interogările pe baza funcțiilor de gestionare specificate (rezolvatori).

De ce ar trebui să utilizați GraphQL?

REST este un standard ușor de utilizat, iar majoritatea limbajelor de programare au instrumente pentru a construi rapid API-uri RESTful. Cu toate acestea, există multe probleme legate de construirea și consumul de API-uri RESTful.

Iată câteva dintre problemele legate de REST care îi fac pe dezvoltatori să prefere GraphQL pentru unele cazuri de utilizare.

Preluare ineficientă a datelor

API-urile RESTful transmit date pe baza specificațiilor punctului final. Nu sunt suficient de flexibili pentru a prelua date dincolo de ceea ce este codificat greu în funcția de gestionare a punctului final.

Să presupunem că un punct final returnează o listă de date la apel și trebuie să specificați valori sau criterii pentru câmpuri. În acest caz, dezvoltatorul trebuie să creeze un punct final și să definească logica de afaceri pentru a returna datele. Puteți analiza manual resursa valoroasă, ceea ce în cele din urmă durează mai mult timp.

GraphQL rezolvă problema preluării ineficiente a datelor, deoarece puteți interoga API-urile pentru a returna date pe baza criteriilor și specificațiilor în mod flexibil.

API-urile GraphQL sunt interactive; puteți specifica datele pe care trebuie să le regăsiți într-o sintaxă ușor de citit.

{ 
user(where: {age: {_eq: "89"}}) {
name
school(where: {alive: {_eq: true}}) {
bio
nationality
}
}
}

Interogarea GraphQL de mai sus interogă a utilizator schema pentru intrările în care vârstă câmpul este 89. Interogarea are o interogare încorporată pentru intrările în care în viaţă evaluează câmpul Adevărat . Returnează câmpurile de nume, biografie și naționalitate din schemă.

Dezvoltare rapidă

Crearea și consumarea API-urilor GraphQL este mai ușor decât utilizarea REST, mai ales pe măsură ce dimensiunea proiectului crește. În timpul fazei de dezvoltare, nu trebuie să dezvoltați atât de multe rute și funcții de gestionare ca atunci când dezvoltați API-uri RESTful. Consumul de API-uri GraphQL nu este la fel de obositor ca API-urile RESTful.

În REST, punctele finale diferite oferă acces la resurse diferite, spre deosebire de GraphQL, unde există un singur punct final. Acest lucru oferă flexibilitate și performanță, iar interogările pot apela diferite funcții de rezolvare.

nu există fixare securizată pe internet pentru Windows 10

Limbajul de definire a schemei GraphQL

GraphQL Schema Definition Language (SDL) specifică schemele pentru serviciile GraphQL.

Sintaxa GraphQL SDL este ușor de citit și de înțeles. Veți specifica structura schemei dvs. într-un fișier cu .graphql sau .graphqls extensie.

type Human { 
name: String!
age: Int!
}

input AddHuman {
name: String!
age: Int!
}

type Mutation {
CreateHuman(input: AddHuman!): Human!
DeleteHuman(id: Int!): String!
UpdateHuman(id: Int!): String!
}

type Query {
GetHuman(id: Int!): Human!
GetHumans: [Human!]!
}

Codul GraphQL de mai sus este schema pentru un API GraphQL care definește structura API-ului pentru solicitări. Schema definește funcționalitatea CRUD pentru API.

Pe partea clientului, pe baza structurii schemei și a datelor sau operațiunii clientului, clientul poate executa a interogare (GET sau DELETE în REST) ​​sau a mutaţie (PUT sau POST).

Iată un exemplu de interogare a Uman schemă.

query Human { 
name
age
}

Interogarea de mai sus ar returna schema umană Nume și vârstă date de câmp.

Mutațiile GraphQL au o sintaxă destul de diferită în comparație cu interogările. Iată un exemplu de operație de mutație pe Uman schemă.

mutation { 
CreateHuman(input:{ name:"man", age:1000000000000000,}) {
name
age
}
}

Intrările codului de mutație Nume și vârstă câmpuri către client și returnează datele din câmpuri.

Veți avea nevoie de un depozit de date pentru persistență atunci când vă construiți API-ul GraphQL. La fel ca REST și majoritatea arhitecturii web bazate pe HTTP, GraphQL este apatrid și puteți utiliza orice magazin de date sau bază de date pentru aplicația dvs.

Construirea unui API GraphQL

  Limbi acceptate GraphQL

GraphQL este o specificație și puteți construi GraphQL în cele mai populare limbi de pe partea de server. Va trebui să găsiți o bibliotecă cu caracteristicile de care aveți nevoie pentru proiectul dvs.

Când alegeți o bibliotecă GraphQL, doriți să utilizați o bibliotecă bogată în caracteristici care acceptă toate tipurile și operațiunile GraphQL. Cele mai multe biblioteci adoptă fie o abordare pe schemă, fie pe o abordare pe bază de cod. În primul, definiți o schemă GraphQL, iar biblioteca generează soluții și cod standard. Pentru acesta din urmă, codificați rezolutoarele fără a defini o schemă.

cum să afli parola wifi pe Android

GraphQL câștigă adopție

De la înființarea GraphQL, dezvoltatorii și companiile au lansat instrumente pentru a simplifica utilizarea acestuia. Acestea pot reduce timpul de dezvoltare pentru proiecte mai mici și medii.

Puteți consulta clienții GraphQL open-source, documentația GraphQL și specificațiile sale pentru a afla mai multe.