JSON:API बैकएंड
JsonDrop API बैकएंड/फ्रंटएंड इंटरैक्शन के लिए JSON:API इम्प्लीमेंटेशन का उपयोग करता है और इसका पूरी तरह अनुपालन करता है:
आउट-ऑफ़-द-बॉक्स एंडपॉइंट्स के साथ Postman कलेक्शन:
https://drive.google.com/file/d/1rMf0XdrK1zXwPqLQVsTH44Z2ttFxj7ss/view?usp=drive_link
अपने शब्दों में, JSON:API स्पेसिफ़िकेशन है:
[एक] स्पेसिफ़िकेशन कि क्लाइंट को कैसे अनुरोध करना चाहिए कि संसाधन प्राप्त या संशोधित किए जाएँ, और सर्वर को उन अनुरोधों का कैसे उत्तर देना चाहिए।
JSON:API को क्लाइंट्स और सर्वर्स के बीच अनुरोधों की संख्या और डेटा की मात्रा दोनों को न्यूनतम करने के लिए डिज़ाइन किया गया है। यह दक्षता पठनीयता, लचीलापन, या डिस्कवरएबिलिटी से समझौता किए बिना प्राप्त की जाती है।
Drupal की डेटा संरचनाएँ, जैसे कि entity types, bundles, और fields, JSON:API के लिए अत्यंत उपयुक्त हैं।
JSON:API मॉड्यूल को सक्षम करके, आप तुरंत अपने Drupal एप्लिकेशन में हर प्रकार के लिए एक पूर्ण REST API प्राप्त करते हैं। JSON:API आपके entity types और bundles का निरीक्षण करता है ताकि यह गतिशील रूप से URL प्रदान कर सके जिसके माध्यम से आप प्रत्येक तक मानक HTTP मेथड्स—GET, POST, PATCH, और DELETE—का उपयोग करके पहुँच सकते हैं।
JSON:API का दर्शन है कि मॉड्यूल “आउट ऑफ़ द बॉक्स” प्रोडक्शन-रेडी होना चाहिए। इसका अर्थ है कि मॉड्यूल आपके संसाधनों के स्थान, उन पर तुरंत उपलब्ध मेथड्स के बारे में दृढ़ राय रखता है, और एक्सेस कंट्रोल को Drupal Core की परमिशन प्रणाली पर छोड़ देता है। इस समय, कोई कॉन्फ़िगरेशन पेज उपलब्ध नहीं है। इसका मतलब है कि आप न्यूनतम प्रयास के साथ API-चालित Drupal एप्लिकेशन के साथ काम करना शुरू कर सकते हैं।
इस डॉक्यूमेंटेशन पेज की चाइल्ड पेजों में शामिल होंगे:
- JSON:API स्पेसिफ़िकेशन की कोर अवधारणाएँ - और वे Drupal पर कैसे लागू होती हैं
- उस API का व्यापक अवलोकन जो मॉड्यूल उपलब्ध कराता है।
- आपके HTTP अनुरोधों को तैयार करने के बारे में व्यावहारिक जानकारी।
- अपने अनुरोधों को प्रमाणित कैसे करें।
- सामान्य “gotchas।”
- विशिष्ट डॉक्यूमेंटेशन:
- व्यक्तिगत संसाधन प्राप्त करना (GET)
- संसाधनों के संग्रह प्राप्त करना (GET with filters, pagination, और sorting)
- नए संसाधन बनाना (POST)
- मौजूदा संसाधनों को अपडेट करना (PATCH)
- मौजूदा संसाधनों को हटाना (DELETE)
यदि आपके पास विशेष प्रश्न हैं, तो कृपया JSON:API मॉड्यूल की इश्यू कतार [480 issues] में एक सपोर्ट अनुरोध बनाएं।
JSON:API मॉड्यूल द्वारा उपलब्ध कराया गया API Drupal की entity types और bundles पर केंद्रित है। प्रत्येक bundle अपना स्वयं का अद्वितीय URL पाथ प्राप्त करता है, जो सभी एक साझा पैटर्न का पालन करते हैं।
Drupal Core REST मॉड्यूल के विपरीत, ये पाथ कॉन्फ़िगर योग्य नहीं हैं और सभी डिफ़ॉल्ट रूप से सक्षम हैं। कोर REST के विपरीत JSON:API केवल JSON या HAL+JSON जैसा फ़ॉर्मेट नहीं है। यह आपके API के काम करने के तरीके के बारे में बहुत व्यापक नियमों का एक सेट शामिल करता है। यह निर्धारित करता है कि कौन से HTTP मेथड्स का उपयोग किया जाना चाहिए, विशिष्ट परिस्थितियों में कौन से HTTP प्रतिक्रिया कोड लौटाए जाने चाहिए, आपके प्रतिक्रिया बॉडी का फ़ॉर्मेट, और संसाधनों के बीच लिंक। अधिक विस्तृत तुलना के लिए देखें JSON:API बनाम कोर का REST मॉड्यूल।
Types
JSON:API में हर संसाधन का एक वैश्विक रूप से अद्वितीय type
प्रॉपर्टी होना चाहिए। Drupal JSON:API इम्प्लीमेंटेशन इस type प्रॉपर्टी को entity type मशीन नाम और bundle मशीन नाम से प्राप्त करता है। उदाहरण के लिए, लेख, पेज और उपयोगकर्ताओं को क्रमशः node--article
, node--pages
, और user--user
टाइप दिए जाते हैं। ध्यान दें कि Drupal में user entity type का कोई bundle नहीं होता। जब किसी entity type का bundle नहीं होता, तो entity type को बस स्थिरता के लिए दोहराया जाता है।
URL संरचना
एक JSON:API URL इस तरह दिखता है:
GET|POST /jsonapi/node/article
PATCH|DELETE /jsonapi/node/article/{uuid}
प्रत्येक संसाधन प्रकार को API में अद्वितीय रूप से संबोधित करने योग्य होना चाहिए। इसका अर्थ है कि API में उपलब्ध प्रत्येक प्रकार का एक अद्वितीय URL होना चाहिए। इसके अतिरिक्त, प्रत्येक प्रकार को संबोधित करने योग्य बनाने की आवश्यकता का अर्थ है कि केवल एक संसाधन प्रकार को किसी दिए गए URL द्वारा फ़ेच किया जा सकता है। Drupal इम्प्लीमेंटेशन इस पैटर्न का पालन करता है: /jsonapi/{entity_type_id}/{bundle_id}[/{entity_uuid}]
।
URL हमेशा /jsonapi
से प्रीफ़िक्स किया जाता है।
इसके बाद, entity type id और bundle id को एक फ़ॉरवर्ड स्लैश द्वारा संयोजित किया जाता है। ध्यान दें कि /jsonapi/node
पर कोई URL नहीं है, क्योंकि यह URL स्पेसिफ़िकेशन का उल्लंघन करेगा, एक ही URL से कई bundle प्रकारों के कारण कई संसाधन प्रकारों को सर्व करके।
मौजूद है:
/jsonapi/node/page
/jsonapi/node/article
मौजूद नहीं है:
/jsonapi/node
entity type और bundle id के बाद, एक वैकल्पिक ID भाग होता है। व्यक्तिगत संसाधन को संबोधित करने के लिए, चाहे उन्हें फ़ेच करना हो, अपडेट करना हो, या हटाना हो, आपको इस पाथ भाग को शामिल करना होगा। यह हमेशा संसाधन का UUID होता है। जब एक नया संसाधन बनाया जाता है, ID के साथ या बिना, या किसी एक प्रकार के संसाधनों का संग्रह प्राप्त करते समय, ID पाथ भाग को छोड़ दिया जाता है।
GET, POST
/jsonapi/node/article
PATCH, DELETE
/jsonapi/node/article/{uuid}
HTTP मेथड्स
JSON:API यह निर्दिष्ट करता है कि कौन से HTTP मेथड्स स्वीकार किए जाएँ। वे हैं: GET, POST, PATCH, और DELETE। विशेष रूप से, PUT शामिल नहीं है।
- GET - डेटा प्राप्त करें, यह संसाधनों का संग्रह या व्यक्तिगत संसाधन हो सकता है
- POST - एक नया संसाधन बनाएँ
- PATCH - मौजूदा संसाधन अपडेट करें
- DELETE - मौजूदा संसाधन हटाएँ
रिक्वेस्ट हेडर
उचित समय पर 'Content type' और 'Accept' हेडर का उपयोग करना सुनिश्चित करें। अधिक विवरण के लिए देखें Client responsibility।
Accept: application/vnd.api+json
Content-Type: application/vnd.api+json
रेस्पॉन्स कोड
JSON:API स्पेसिफ़िकेशन स्वीकार्य प्रतिक्रियाएँ भी निर्धारित करता है। Drupal इम्प्लीमेंटेशन उनमें से एक उपसमुच्चय का उपयोग करता है। मॉड्यूल निम्नलिखित कोड्स के साथ उत्तर दे सकता है:
- 200 OK - सभी सफल GET और PATCH अनुरोध
- 201 Created - सभी सफल POST अनुरोध (प्रतिक्रिया में नया बनाया गया संसाधन शामिल होता है)
- 204 No Content - सभी सफल DELETE अनुरोध
Drupal Documentation से लेख।