Scroll
JSON:API-ն ընդդեմ core-ի REST մոդուլի
Կարճ՝ TL;DR
Ընտրեք REST, եթե ունեք ոչ էյնթիթի տվյալներ, որոնք ցանկանում եք հասանելի դարձնել։ Մնացած բոլոր դեպքերում ընտրեք JSON:API։
Ավելի մանրամասն՝
- Core-ի REST մոդուլը թույլ է տալիս ամեն ինչ (ցանկացած ֆորմատ, ցանկացած տրամաբանություն, ցանկացած HTTP մեթոդ) և բարձր կարգավորելիություն։ Ուժեղ է, բայց բարդ և այդ պատճառով ավելի փխրուն։
- JSON:API-ն կենտրոնանում է Drupal-ի ամենամեծ առավելության՝ էյնթիթիների/տվյալների մոդելավորման, տրամաբանական ներկայացման վրա։ Պարզ, բայց բավարար ուժեղ մեծ մասի կիրառությունների համար։
Համեմատության աղյուսակ
Հատկություն | JSON:API | REST | Նշում |
---|---|---|---|
Էյնթիթիների հասանելիություն որպես ռեսուրսներ | ✔️ | ✔️ | REST-ում՝ պետք է կարգավորել յուրաքանչյուր էյնթիթի տիպի համար։ JSON:API-ում՝ ամեն ինչ հասանելի է լռությամբ։ Երկուսում էլ՝ հարգվում է էյնթիթիի հասանելիությունը։ |
Սեփական տվյալների հասանելիություն որպես ռեսուրսներ | ✔️ | Գրել custom @RestResource plugins։ JSON:API-ն աջակցում է միայն էյնթիթիներին։ | |
Առանձին ռեսուրսների ստացում | ✔️ | ✔️ | |
Ռեսուրսների ցուցակների ստացում | ✔️ | մեկ տեսակով | REST-ում՝ պետք է կարգավորել view և ստեղծել "REST export" տեսք։ |
Ցուցակների էջավորում (pagination) | ✔️ | Պահանջվում է Pager Serializer մոդուլը։ | REST-ում՝ չի աջակցվում։ REST export views-ը վերադարձնում է բոլոր ռեսուրսները։ |
Ցուցակների ֆիլտրում | ✔️ | մեկ տեսակով | REST-ում՝ միայն եթե ստեղծել եք ցուցադրվող ֆիլտր յուրաքանչյուր դաշտի ու յուրաքանչյուր օպերատորի համար։ |
Ռեսուրսների դասավորություն (sorting) | ✔️ | ||
Include/embedding | ✔️ | Միայն HAL+JSON-ում | |
Դաշտերի արժեքների ավելորդ փաթեթավորում չկա | ✔️ | HAL նորմալիզացիան և լռությամբ նորմալիզացիան (և բոլոր ֆորմատները) վերադարձնում են հենց այն PHP տվյալների կառուցվածքը, որը օգտագործում է Drupal-ը, ինչը դժվարացնում է օգտագործումը։ JSON:API-ն պարզեցնում է միարժեք դաշտերի և հատկությունների ներկայացումը։ | |
Հնարավորություն դուրս թողնել չանհրաժեշտ դաշտերը | ✔️ | ||
Համապատասխան URL-ներ | ✔️ | ||
Սպառողը կարող է հայտնաբերել ռեսուրսի տիպերը | ✔️ | ||
Drupal-ից անկախ պատասխանների կառուցվածք | ✔️ | REST-ում՝ HAL նորմալիզացիան տեսականորեն Drupal-ից անկախ է, բայց գործնականում այդպես չէ։ | |
Կլիենտ գրադարաններ | ✔️ | ||
Ընդարձակվող (extensible) սպեկ | Պատրաստվում է (WIP) | ||
Զրոյական կարգավորում (zero configuration) | ✔️ | REST-ում՝ յուրաքանչյուր @RestResource plugin-ը կարելի է դարձնել հասանելի, բայց պետք է կարգավորել։ Պետք է նշել թույլատրվող ֆորմատները, նույնականացման մեթոդները և անհրաժեշտության դեպքում՝ HTTP մեթոդները։ JSON:API-ում՝ բոլոր էյնթիթիները հասանելի են ավտոմատ, էյնթիթի/դաշտի հասանելիությունը հարգվում է, բոլոր միացված authentication providers-ը թույլատրված են։ |
Ավելին
Տեսեք JSON:API մոդուլը Drupal core-ում ավելացնելու հիմնավորումը և մոդուլի ճարտարապետության հիմնավորումը։
Հոդվածը՝ Drupal Documentation։