Վերանայումներ
JSON:API մոդուլը ներկայացնում է էակի վերանայումները որպես ռեսուրսի տարբերակներ, ձևաչափով, որը ներշնչված է RFC5829: Կապի հարաբերության տեսակներ վեբ ռեսուրսների տարբերակների պարզ նավիգացիայի համար։
Ներկա սահմանափակումները՝
- Ռեսուրսի տարբերակները (էակի վերանայումները) կարող են միայն ընթերցվել։ Եվ միայն
Node
ևMedia
էակների տեսակների (node--*
ևmedia--*
ռեսուրսի տեսակների) համար JSON:API-ն կարող է հասանելի դարձնել ռեսուրսի տարբերակները (քանի որ Drupal core-ում չկա պաշտոնական էակի վերանայման հասանելիության կառավարման API, երբ դա հասանելի դառնա, մենք բոլոր վերանայվող էակների տեսակները կդարձնենք հասանելի JSON:API-ով, տես #3031271: Աջակցել տարբերակի բանակցությանը ցանկացած էակի տիպի համար (ներկայումս միայն Node և Media են աջակցվում)). - Սակայն ռեսուրսի տարբերակները ավտոմատ կերպով ստեղծվում են, երբ
PATCH
հարցում է կատարվում այն ռեսուրսի (էակի տիպ + փունջ), որը կարգավորվել է ավտոմատ կերպով նոր տարբերակներ (վերանայումներ) ստեղծելու համար։ Մենք աշխատում ենք այն ուղղությամբ, որ հնարավոր լինիPATCH
հարցմամբ վերսիանացվող ռեսուրսին նշել՝ արդյոք պետք է ստեղծվի նոր վերանայում, թե ոչ, տես #2993557: Թույլատրել նոր վերանայման ընտրովի ստեղծումը PATCH հարցում կատարելիս՝ autosave ֆունկցիոնալության աջակցման համար JSON:API-ով։
Վերանայման աջակցությունը JSON:API սպեցիֆիկացիայի պաշտոնական մաս չէ։ Սակայն «պրոֆիլների» որոշակի քանակ մշակվում է (նաև սպեցիֆիկացիայի պաշտոնական մաս չէ, բայց արդեն ընդգրկված է JSON:API v1.1-ում), որպեսզի ստանդարտացվի JSON:API մոդուլի կողմից մշակված ցանկացած հատուկ վարքագիծ (որոնք բոլորը դեռ համապատասխան են սպեցիֆիկացիային)։
Դրա շնորհիվ, JSON:API մոդուլը պետք է հնարավորինս համատեղելի լինի այլ համակարգերի հետ և նվազագույնի հասցնի «Դրուպալիզմները», որոնք պետք է իմանա JSON:API-ի հետ աշխատող մշակողը։
JSON:API մոդուլում «տարբերակ» է համարվում ցանկացած վերանայում, որը նախկինում կամ ներկայումս լռելյայն վերանայում է։ Ոչ բոլոր վերանայումներն են համարվում «տարբերակ»։ Այն վերանայումները, որոնք նշված չեն որպես «լռելյայն» վերանայում, համարվում են «աշխատանքային պատճեններ», քանի որ սովորաբար դրանք հասանելի չեն հանրությանը և հենց դրանք են, որոնց վրա կատարվում է նոր աշխատանքը։
Երբ Content Moderation մոդուլը տեղադրված է, հնարավոր է, որ վերջին լռելյայն վերանայումը *չլինի* ամենավերջին վերանայումը։
Ռեսուրսի տարբերակ պահանջելը կատարվում է URL հարցման պարամետրով։ Այն ունի հետևյալ տեսքը՝
version-identifier
__|__
/ \
?resourceVersion=foo:bar
\_/ \_/
| |
version-negotiator |
version-argument
Տարբերակի նույնականացուցիչը տող է, որում կա բավարար ինֆորմացիա՝ որոշակի վերանայում բեռնելու համար։ Տարբերակի բանակցող բաղադրիչը նշում է վերանայում բեռնելու բանակցման մեխանիզմը։ Ներկայումս դա կարող է լինել id
կամ rel
։ id
բանակցողը որպես տարբերակի արգումենտ օգտագործում է ցանկալի վերանայման ID-ն։ rel
բանակցողը որպես տարբերակի արգումենտ օգտագործում է latest-version
կամ working-copy
տողերը։
Ապագայում կարող են մշակվել նաև այլ բանակցողներ։ Օրինակ՝ ժամանակի կնիքի կամ workspace-ի հիման վրա գործող բանակցող։
Որպես օրինակ՝ պատկերացրեք node, որը ունի «Հրապարակված» վերանայում և դրանից հետո՝ «Սևագիր» վերանայում։
Օգտագործելով JSON:API, կարելի է պահանջել «Հրապարակված» node-ը հետևյալ կերպ՝ /jsonapi/node/page/{{uuid}}?resourceVersion=rel:latest-version
։
Էակը, որը դեռ մշակման փուլում է (այսինքն՝ «Սևագիր» վերանայում), կարելի է նախադիտել հետևյալ հարցմամբ՝ /jsonapi/node/page/{{uuid}}?resourceVersion=rel:working-copy
։
Որոշակի վերանայման ID պահանջելու համար կարելի է օգտագործել՝ /jsonapi/node/page/{{uuid}}?resourceVersion=id:{{revision_id}}
։
Դեռևս հնարավոր չէ պահանջել վերանայումների հավաքածու։ Այս ֆունկցիոնալությունը մշակման փուլում է՝ տես #3009588: Տրամադրել հավաքածուի ռեսուրս, որտեղ հնարավոր է ստանալ տարբերակների պատմություն (`version-history`, `predecessor-version` և `successor-version` կապի հարաբերություններ)։
Հոդվածը վերցված է Drupal փաստաթղթերից։