Ռեսուրսների ստացում (GET)
Այս էջում ներկայացված են GET հարցումների օրինակներ JSON:API մոդուլի համար։
Ստորև բերված բոլոր օրինակներում հարցման հեդերներ պարտադիր չեն։ Ավտենտիֆիկացում նույնպես պարտադիր չէ, եթե անանուն օգտվողները կարող են մուտք գործել բովանդակության էակներին։ Կոնֆիգուրացիոն էակների (օր.՝ մենյու) դեպքում տես վերջին բաժինները։
Ուշադրություն՝ բոլոր դեպքերում, երբ անհրաժեշտ է id, պետք է օգտագործել էակի uuid-ը, ոչ թե սերիական ID-ն։
Accept հեդեր
Պետք է միշտ ուղարկեք accept հեդերը՝ Accept: application/vnd.api+json։
curl \
--header 'Accept: application/vnd.api+json' \
....
Հիմնական GET օրինակ
Հասցե՝ http://example.com/jsonapi/node/article/{{article_uuid}}
Պատասխան
HTTP 200 պատասխան։ Պատասխանի մարմնում՝ մեկ հոդվածի (article node) JSON:API օբյեկտը՝ բոլոր հատկություններով, կապերով և հղումներով։
GET հարցում՝ մի քանի հոդվածի համար
Հասցե՝ http://example.com/jsonapi/node/article
Պատասխան
HTTP 200 պատասխան։ Պատասխանի մարմնում՝ առավելագույնը 50 հոդվածի JSON:API օբյեկտ, ներառյալ հաջորդ էջի հղումը։
GET հարցում՝ առաջին 10 հոդվածի համար
Հասցե՝ http://example.com/jsonapi/node/article?page[limit]=10
Պատասխան
JSON պատասխան՝ առավելագույնը 10 հոդվածի համար, ներառյալ հաջորդ էջի հղումները։
GET հարցում՝ երկրորդ 10 հոդվածի համար (pagination)
Հասցե՝ http://example.com/jsonapi/node/article?page[limit]=10&page[offset]=10
Պատասխան
HTTP 200 պատասխան։ Պատասխանի մարմնում՝ առավելագույնը 10 հոդվածի JSON:API օբյեկտ՝ ներառյալ նախորդ, հաջորդ և այլ էջերի հղումները։
Ավելին՝ էջավորման մասին՝ https://www.drupal.org/docs/8/modules/jsonapi/pagination
GET հարցում՝ հոդվածները սորտավորված
Հասցե՝ http://example.com/jsonapi/node/article?sort=nid
Պատասխան
HTTP 200 պատասխան։ Պատասխանի մարմնում՝ հոդվածների JSON:API օբյեկտը, սորտավորված nid դաշտով աճման կարգով։ Օգտագործեք &sort=-nid
՝ նվազման կարգով։
Ավելին՝ սորտավորման մասին՝ https://www.drupal.org/node/2803141
GET հոդված՝ վերնագրով ֆիլտրված
Հասցե՝ http://example.com/jsonapi/node/article?filter[article-title][path]=title&filter[article-title][value]={{title_filter}}&filter[article-title][operator]==
Պատասխան
HTTP 200 պատասխան։ Պատասխանի մարմնում՝ JSON:API օբյեկտ այն հոդվածների համար, որոնց 'title' դաշտը համապատասխանում է '{{title_filter}}' արժեքին։
Ավելին՝ ֆիլտրման մասին՝ https://www.drupal.org/node/2943641
GET հոդված՝ media entity reference դաշտի (field_image) url և uri ստանալու համար (include)
Նոր տարբերակ՝
http://example.com/jsonapi/node/article/{{article_uuid}}?include=field_image&fields[file--file]=uri,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
Պատասխան
HTTP 200 պատասխան։ Պատասխանի մարմնում՝ համապատասխան հոդվածի media image-ի JSON:API օբյեկտները։
GET հոդված՝ բոլոր կապակցված տվյալներով (հեղինակ, տաքսոնոմիա և այլն)
Հասցե՝ http://example.com/jsonapi/node/article?fields[node--article]=uid,title,created&include=uid
Պատասխան
HTTP 200 պատասխան։ Պատասխանի մարմնում՝ user օբյեկտ՝ կապված օգտվողի բոլոր տվյալներով։ Նույն սինտաքսը կարող եք օգտագործել այլ կապակցված տվյալների (օր.՝ տաքսոնոմիա) համար։
GET հոդված՝ օգտվողի հղման դաշտով և նրա պրոֆայլով (հղում դաշտի մեջ՝ ևս մեկ հղում)
Հասցե՝ http://example.com/jsonapi/node/article/{{article_uuid}}?include=field_user_ref_example,field_user_ref_example.ref_example_profile
Պատասխան
HTTP 200 պատասխան։ Պատասխանի մարմնում՝ օգտվողի օբյեկտ, որը պարունակում է բոլոր տվյալները և նաև իր պրոֆայլը։ Նույն սինտաքսը գործում է նաև այլ նեստված հղումների համար։
GET հոդված՝ ընտրովի կապակցված դաշտերով (օր.՝ միայն հեղինակ անուն և էլ․ հասցե)
Հասցե՝ http://example.com/jsonapi/node/article?fields[node--article]=uid,title,created&fields[user--user]=name,mail&include=uid
Պատասխան
HTTP 200 պատասխան։ Պատասխանի մարմնում՝ օգտվողի օբյեկտ միայն նշված դաշտերով (այստեղ՝ հեղինակ անուն և էլ․ հասցե)։ Նույնը գործում է այլ կապակցված տվյալների համար։
GET հարցում՝ օգտվողների համար
Հասցե՝ http://example.com/jsonapi/user/user?filter[anon][condition][path]=uid&filter[anon][condition][value]=0&filter[anon][condition][operator]=<>
Պատասխան
HTTP 200 պատասխան։ Պատասխանի մարմնում՝ համակարգում գրանցված բոլոր օգտվողների JSON:API օբյեկտները, բացի անանուն օգտվողից։ Ուշադրություն՝ եթե ուղղակի հարցում ուղարկեք /jsonapi/user/user
հասցեին, կստանաք HTTP 403 սխալ։
Կոնֆիգուրացիոն էակների ստացում
Քանի որ կոնֆիգուրացիոն էակները (օր.՝ մենյու, node type, tour) տարբեր են բովանդակության էակներից (nodes, users), դրանց ստացումը մի փոքր ավելի բարդ է։ Ներկայումս կոնֆիգուրացիոն էակները միայն կարդացվող են։
Թեստավորման համար օգտագործեք user-1 և basic_auth մոդուլը։
- Միացրեք basic_auth մոդուլը
- Դիտարկենք, որ user-1-ի անունը admin է, իսկ գաղտնաբառը՝ admin
Հետևյալ հրամանով կարող եք ցուցադրել մենյուները՝
curl \
--header 'Accept: application/vnd.api+json' \
http://admin:admin@drupal.d8/jsonapi/menu/menu
Հոդվածի աղբյուրը՝ Drupal Documentation։