Resources ophalen (GET)
Deze pagina toont voorbeelden van verschillende GET-verzoeken voor de JSON:API module.
In alle onderstaande voorbeelden zijn geen request headers vereist. Er is geen authenticatie nodig als anonieme gebruikers toegang hebben tot content-entiteiten. Voor configuratie-entiteiten zoals menu’s, zie de laatste sectie(s).
Let op dat in alle gevallen, wanneer een id nodig is, dit altijd de uuid van de entiteit is, niet de entity id.
Accept-header
Zorg ervoor dat je altijd de accept-header meestuurt: Accept: application/vnd.api+json.
curl \
--header 'Accept: application/vnd.api+json' \
....
Eenvoudig GET-voorbeeld
URL: http://example.com/jsonapi/node/article/{{article_uuid}}
Response
HTTP 200 response. De response body bevat het JSON:API-object van een enkel artikel-node, inclusief attributen, relaties en links.
GET meerdere artikelen
URL: http://example.com/jsonapi/node/article
Response
HTTP 200 response. De response body bevat het JSON:API-object van maximaal 50 artikelen, inclusief link naar de volgende.
GET eerste 10 artikelen
URL: http://example.com/jsonapi/node/article?page[limit]=10
Response
JSON response van maximaal 10 artikelen, inclusief links naar de volgende.
GET tweede pagina met 10 artikelen
URL: http://example.com/jsonapi/node/article?page[limit]=10&page[offset]=10
Response
HTTP 200 response. De response body bevat het JSON:API-object van maximaal 10 artikelen, inclusief links naar vorige, volgende, enz.
Voor meer informatie over paginering, zie: https://www.drupal.org/docs/8/modules/jsonapi/pagination
GET meerdere artikelen gesorteerd
URL: http://example.com/jsonapi/node/article?sort=nid
Response
HTTP 200 response. De response body bevat het JSON:API-object van artikelen, oplopend gesorteerd op nid. Gebruik &sort=-nid
om aflopend te sorteren.
Voor meer informatie over sorteren, zie: https://www.drupal.org/node/2803141
GET artikel gefilterd op titel
URL: http://example.com/jsonapi/node/article?filter[article-title][path]=title&filter[article-title][value]={{title_filter}}&filter[article-title][operator]==
Response
HTTP 200 response. De response body bevat het JSON:API-object van artikelen, gefilterd op de ‘title’-veldwaarde die overeenkomt met '{{title_filter}}'.
Voor meer informatie over filters, zie: https://www.drupal.org/node/2943641
GET artikel media entity reference field_image url, uri door references mee te nemen
Nieuwere syntax
URL:
http://example.com/jsonapi/node/article/{{article_uuid}}?include=field_image&fields[file--file]=uri,url
Oudere syntax
URL: http://example.com/jsonapi/node/article/{{article_uuid}}?include=field_image,field_image.image,field_image.image.file--file&fields[field_image]=image&fields[file--file]=uri,url
Response
HTTP 200 response. De response body bevat het JSON:API-object van de inbegrepen media-image-relaties, die overeenkomen met de enkele artikel-node met '{{article_uuid}}'.
GET artikel samen met volledige gerelateerde data set (auteur, taxonomy-term, enz.)
URL: http://example.com/jsonapi/node/article?fields[node--article]=uid,title,created&include=uid
Response
HTTP 200 response. De response body bevat een user-object met alle informatie over de gekoppelde gebruiker. Dezelfde syntax werkt ook voor andere gerelateerde data zoals taxonomy-term.
GET artikel met user reference-veld, field_user_ref_example, en zijn profiel, ref_example_profile, (reference field binnen een reference field)
URL: http://example.com/jsonapi/node/article/{{article_uuid}}?include=field_user_ref_example,field_user_ref_example.ref_example_profile
Response
HTTP 200 response. De response body bevat een user-object met alle informatie over de gekoppelde gebruiker en zijn profiel. Dezelfde syntax werkt ook voor andere gerelateerde data die een reference-veld bevat.
GET artikel samen met geselecteerde gerelateerde data-items (auteur, taxonomy-term, enz.)
URL: http://example.com/jsonapi/node/article?fields[node--article]=uid,title,created&fields[user--user]=name,mail&include=uid
Response
HTTP 200 response. De response body bevat een user-object met de opgegeven velden in het gerelateerde object (in dit geval, auteursnaam en auteur e-mail). Dezelfde syntax werkt ook voor andere gerelateerde data zoals taxonomy-term.
GET gebruikersaccounts
URL: http://example.com/jsonapi/user/user?filter[anon][condition][path]=uid&filter[anon][condition][value]=0&filter[anon][condition][operator]=<>
Response
HTTP 200 response. De response body bevat het JSON:API-object van gebruikersaccounts in het systeem, met uitzondering van het anonieme gebruikersaccount. Let op dat als je een lijst van alle gebruikersaccounts wilt ophalen, je de bovenstaande query moet gebruiken, omdat een eenvoudig GET-verzoek naar /jsonapi/user/user
zal resulteren in een HTTP 403-fout.
Configuratie-entiteiten ophalen
Aangezien configuratie-entiteiten (menu, node type, tour) niet hetzelfde zijn als content-entiteiten (nodes, gebruikers), is dit iets lastiger. Momenteel zijn configuratie-entiteiten alleen-lezen.
Voor eenvoudig testen gebruiken we user-1 en de basic_auth-module.
- Schakel de basic_auth-module in
- Ga ervan uit dat de gebruikersnaam van user-1 admin is en het wachtwoord admin
Met het volgende commando krijg je een lijst van menu’s.
curl \
--header 'Accept: application/vnd.api+json' \
http://admin:admin@drupal.d8/jsonapi/menu/menu
Artikel van Drupal Documentatie.