logo

Լրացուցիչ Բլոկների Տեսակներ (EBT) - Դասավորության Կառուցողի նոր փորձառություն❗

Լրացուցիչ Բլոկների Տեսակներ (EBT) - ձևավորված, կարգավորելի բլոկների տեսակներ՝ սլայդշոուներ, ներդիրներ, քարտեր, բացվող ցանկեր և շատ ուրիշներ։ Ներառված կարգավորումներ՝ ֆոնի, DOM տուփի, JavaScript փլագինների համար։ Փորձեք դասավորությունների կառուցման ապագան արդեն այսօր։

EBT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EBT մոդուլները

❗Լրացուցիչ Պարբերությունների Տեսակներ (EPT) - Պարբերությունների նոր փորձառություն

Լրացուցիչ պարբերության տեսակներ (EPT) - անալոգիական պարբերության վրա հիմնված մոդուլների հավաքակազմ։

EPT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EPT մոդուլները

Scroll
18/05/2025, by Ivan

JSON Drop API Documentation

Կարճ տարբերակ (TL;DR)՝ Օգտագործեք հարցման տող, օրինակ՝ ?include=field_comments.uid, որպեսզի ընդգրկվեն field_comments-ով հղված բոլոր էակները, ինչպես նաև uid-ով հղված բոլոր էակները այդ էակների համար։


JSON:API-ն օգնում է նվազեցնել HTTP հարցումների քանակը՝ թույլ տալով նշել կապի դաշտերի ճանապարհները, որոնք ցանկանում եք ներառել պատասխանի փաստաթղթում: Ինչպե՞ս։

Մեկ ռեսուրսի ստացում

Հոդվածի ստացում

Պատկերացրեք, որ ունեք հոդված երկու մեկնաբանությամբ, և այդ մեկնաբանություններից յուրաքանչյուրն ունի նույն հեղինակը։ Այս բոլոր տվյալները առանց ներառումների ստանալու համար նախ հարցում եք կատարում GET /jsonapi/node/article/some-random-uuid հասցեով՝

{
  "data": {
    "type": "node--article",
    "id": "some-random-uuid",
    "relationships": {
      "field_comments": {
        "links": {
          "related": {
            "href": "https://my.example.com/node/article/some-random-uuid/field_comments"
          }
        }
      }
    }
  }
}

Մեկնաբանության ստացում

Այնուհետև հարցում եք կատարում GET /node/article/some-random-uuid/field_comments հասցեով՝

{
  "data": [{
    "type": "comment",
    "id": "one-random-uuid",
    "relationships": {
      "uid": {
        "links": {
          "related": {
            "href": "https://my.example.com/comment/one-random-uuid/uid"
          }
        }
      }
    }
  }, {
    "type": "comment",
    "id": "two-random-uuid",
    "relationships": {
      "uid": {
        "links": {
          "related": {
            "href": "https://my.example.com/comment/two-random-uuid/uid"
          }
        }
      }
    }
  }
}

Օգտատերերի ստացում

Այդուհետ պետք է ևս երկու հարցում կատարեք՝ /comment/one-random-uuid/uid և /comment/two-random-uuid/uid հասցեներով։ Կարելի է տեսնել, որ երկրորդ հարցումը լրիվ ավելորդ է, քանի որ օրինակով գիտենք՝ երկու մեկնաբանության հեղինակը նույնն է։

Ուրեմն, ինչպես կարող են օգնել ներառումները (includes)?

Բոլոր տվյալների մեկ հարցմամբ ստացում՝ include-ի միջոցով

Շատ հեշտ է։ Պարզապես ավելացրեք հարցման պարամետր հիմնական հարցման հասցեին՝ այն կապի դաշտերի անուններով, որոնք ցանկանում եք ներառել, և սերվերը կհավաքի ու կավելացնի այդ բոլոր տվյալները պատասխանի փաստաթղթում։

Մեր օրինակում, պետք է հարցում անել այսպես՝ GET /jsonapi/node/article/some-random-uuid?include=field_comments.uid։ Այլ կերպ ասած, դուք ասում եք՝ «Խնդրում եմ, ավելացրեք ռեսուրսի օբյեկտները հոդվածի field_comments դաշտի համար, և հետո՝ նաև այն մեկնաբանությունների uid դաշտի համար, որոնք կան։» Այս «կապի ճանապարհները» կարող են լինել որքան ուզեք՝ սահմանափակում չկա։

Սերվերից ստացված պատասխանը կարող է լինել այսպիսի՝

{
  "data": {
    "type": "node--article",
    "id": "some-random-uuid",
    "relationships": {
      "field_comments": {
        "data": [{
          "type": "comment",
          "id": "one-random-uuid",
        }, {
          "type": "comment",
          "id": "two-random-uuid",
        }],
        "links": {
          "related": {
            "href": "https://my.example.com/node/article/some-random-uuid/field_comments"
          }
        }
      }
    }
  },
  "included": [{
    "type": "comment",
    "id": "one-random-uuid",
    "relationships": {
      "uid": {
        "data": [{
          "type": "user",
          "id": "another-random-uuid",
        }],
        "links": {
          "related": {
            "href": "https://my.example.com/comment/one-random-uuid/uid"
          }
        }
      }
    }
  }, {
    "type": "comment",
    "id": "another-random-uuid",
    "relationships": {
      "uid": {
        "data": [{
          "type": "user",
          "id": "one-random-uuid",
        }],
        "links": {
          "related": {
            "href": "https://my.example.com/comment/two-random-uuid/uid"
          }
        }
      }
    }
  }, {
    "type": "user",
    "id": "another-random-uuid",
    "attributes": {
      "name": "c0wb0yC0d3r"
    }
  }]
}

Զվարճալի չէ՞։ Միայն մեկ հարցմամբ ստացանք բոլոր տվյալները։ Նկատեք, որ օգտատիրոջ ռեսուրսի օբյեկտը ներառված է միայն մեկ անգամ, թեև երկու անգամ է հղվում։ Սա փոքր է պահում պատասխանի չափը։ Նաև, յուրաքանչյուր կապի օբյեկտում կա data բանալի։ Դա թույլ է տալիս համադրել ներառված ռեսուրսների օբյեկտները՝ ըստ նրանց հղումների։

Ե՞րբ օգտագործել include

Խոսելով պատասխանի չափի մասին... այս օրինակով, մենք ժամանակ խնայեցինք՝ բոլոր ռեսուրսները մեկ հարցմամբ ստանալով։ Բայց որոշ դեպքերում՝ հարակից ռեսուրսների ներառումը կարող է զգալիորեն մեծացնել պատասխանի չափը և/կամ դանդաղեցնել առաջին բայթի ժամանումը։ Այդ դեպքերում, ավելի լավ է զուգահեռ կատարել մի քանի հարցում։

Include՝ հավաքածուների և կապերի համար

Վերջապես, include հարցման պարամետրը աջակցվում է նաև հավաքածուի և կապի ռեսուրսների համար։ Հավաքածուների include-ը կարող է խնայել շատ ավել հարցումներ։

Include՝ հավաքածուի օրինակով

Հավաքածուի ներառումների հարցումը կարող է լինել այսպես՝ GET /jsonapi/node/article?include=uid։ included-ը նույնպես առանձնացված է data-ից (զանգված, ոչ թե օբյեկտ), ինչպես ցույց է տրված ներքևում։

{
  "data": [{...}]
  "included": [{
    "type": "user",
    "id": "another-random-uuid",
    "attributes": {
      "name": "c0wb0yC0d3r"
    }
  }]
}

Հոդվածը վերցված է Drupal փաստաթղթերից։