====== 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]]