====== 3.1 GraphQL osnove ======
GraphQL((GraphQL specifikacija: https://spec.graphql.org/)) omogoča prilagodljive, natančne podatkovne poizvedbe.
===== Kaj je GraphQL? =====
GraphQL((GraphQL Foundation: https://graphql.org/)) je poizvedovalni jezik za API-je in izvajalno okolje za izvajanje teh poizvedb. V nasprotju z REST((Representational State Transfer: https://de.wikipedia.org/wiki/Representational_State_Transfer)) lahko odjemalci zahtevajo točno tiste podatke, ki jih potrebujejo.
===== Končna točka =====
POST /api/v1/dsn/{dbName}/graphql
Content-Type: application/json
===== Enostavna poizvedba =====
{
"query": "{ customers { id name country } }"
}
===== S parametri =====
{
"query": "{ customers(first: 10, filter: \"Country eq 'DE'\") { id name } }"
}
===== Pridobivanje sheme =====
GET /api/v1/dsn/demo/graphql/schema
Vrne GraphQL shemo v SDL((Schema Definition Language: https://graphql.org/learn/schema/)) obliki.
===== Prednosti v primerjavi z REST =====
^ Vidik ^ REST ^ GraphQL ^
| Končne točke | Mnogo (na vir) | Ena |
| Over-fetching | Pogosto | Nikoli |
| Under-fetching | Pogosto (N+1) | Nikoli |
| Tipska varnost | Neobvezna | Vgrajena |
| Dokumentacija | Zunanja (OpenAPI((OpenAPI Specification: https://www.openapis.org/))) | Integrirana (Introspection) |
===== Viri =====
* [[https://graphql.org/|GraphQL Foundation - uradna spletna stran]]
* [[https://spec.graphql.org/|GraphQL specifikacija]]
* [[https://graphql.org/learn/|GraphQL Learn]]