रीस्ट एपीआई बेस्ट प्रैक्टिस: क्वेरी स्ट्रिंग बनाम अनुरोध बॉडी में


126

REST API में कई स्थानों पर तर्क हो सकते हैं:

  1. अनुरोध निकाय में - एक json बॉडी के भाग के रूप में, या अन्य MIME प्रकार
  2. में क्वेरी स्ट्रिंग - जैसे/api/resource?p1=v1&p2=v2
  3. URL-path के भाग के रूप में - उदा/api/resource/v1/v2

ऊपर 1 और 2 के बीच चयन करने के सर्वोत्तम अभ्यास और विचार क्या हैं?
2 बनाम 3 यहाँ कवर किया गया है



उपरोक्त के अलावा, हेडर का उपयोग कैसे करें?
चर

जवाबों:


40

ऊपर 1 और 2 के बीच चयन करने के सर्वोत्तम अभ्यास और विचार क्या हैं?

आमतौर पर सामग्री बॉडी का उपयोग उस डेटा के लिए किया जाता है, जिसे सर्वर से अपलोड / डाउनलोड / अपलोड किया जाता है और क्वेरी डेटा का उपयोग सटीक डेटा को निर्दिष्ट करने के लिए किया जाता है। उदाहरण के लिए जब आप किसी फ़ाइल को अपलोड करते हैं तो आप शरीर में नाम, माइम प्रकार इत्यादि निर्दिष्ट करते हैं, लेकिन जब आप फ़ाइलों की सूची प्राप्त करते हैं, तो आप फ़ाइलों के कुछ गुण द्वारा सूची को फ़िल्टर करने के लिए क्वेरी मापदंडों का उपयोग कर सकते हैं। सामान्य तौर पर, क्वेरी पैरामीटर डेटा की नहीं, क्वेरी की संपत्ति होते हैं।

बेशक यह एक सख्त नियम नहीं है - आप इसे उस तरीके से लागू कर सकते हैं जो आपको अधिक उपयुक्त लगता है / आपके लिए काम कर रहा है।

आप क्वेरी स्ट्रिंग , विशेष रूप से पहले दो पैराग्राफ के बारे में विकिपीडिया लेख की जांच करना चाह सकते हैं ।


1
आपके उपरोक्त विश्लेषण के लिए एक उचित मार्ग यह है कि आईडीएमएल स्ट्रिंग्स में आइडम्पोटेंट ऑपरेशंस को सबसे अच्छा रखा जाता है और सीआरयूडी को कड़ाई से टाइप किए गए रिस्पांस बॉडी के लिए रखा जाता है, जो अनिवार्य रूप से एसओपी का लाभ उठाता है और सोशल इंजीनियरिंग / फ़ेस अटैक के बहुत ही मूल रूपों को रोकता है
राइस

16

मुझे लगता है कि आप POST / PUT अनुरोधों के बारे में बात कर रहे हैं। शब्दार्थ रूप से अनुरोध निकाय में आपके द्वारा पोस्ट या पैचिंग करने वाला डेटा होना चाहिए।

URL (एक URI) के भाग के रूप में क्वेरी स्ट्रिंग, यह पता लगाने के लिए है कि आप किस संसाधन को पोस्ट या पैच कर रहे हैं।

आपने सर्वश्रेष्ठ अभ्यास के लिए कहा, निम्नलिखित शब्दार्थ मेरा है। बेशक अपने अंगूठे के नियमों का उपयोग करना चाहिए, विशेष रूप से अगर वेब फ्रेमवर्क आप अमूर्त का उपयोग मापदंडों में करते हैं

आप सबसे अधिक जानते हैं:

  • कुछ वेब सर्वरों में URI की लंबाई की सीमा होती है।
  • आप CURL के साथ अनुरोध निकाय के अंदर पैरामीटर भेज सकते हैं।
  • जहाँ आप डेटा भेजते हैं डिबगिंग पर प्रभाव नहीं होना चाहिए।

6

निम्नलिखित मेरे अंगूठे के नियम हैं ...

शरीर का उपयोग कब करें:

  • जब तर्कों में एक फ्लैट कुंजी नहीं होती है: मूल्य संरचना
  • यदि मान मानव पठनीय नहीं हैं, जैसे क्रमबद्ध बाइनरी डेटा
  • जब आपके पास बहुत बड़ी संख्या में तर्क होते हैं

क्वेरी स्ट्रिंग का उपयोग कब करें:

  • जब तर्क ऐसे होते हैं कि आप डीबग करते समय उन्हें देखना चाहते हैं
  • जब आप कोड को विकसित करते हुए उन्हें मैन्युअल रूप से कॉल करने में सक्षम होना चाहते हैं जैसे कि curl
  • जब कई वेब सेवाओं पर तर्क आम हैं
  • जब आप पहले से ही एक अलग सामग्री-प्रकार भेज रहे हैं जैसे कि application/octet-stream

ध्यान दें कि आप मिक्स और मैच कर सकते हैं - आम लोगों को डाल सकते हैं, जिन्हें क्वेरी स्ट्रिंग में डीबग करने योग्य होना चाहिए, और बाकी सभी को जसन में फेंक देना चाहिए।


34
विकास सुविधा के आधार पर अपने एपीआई को कैसे तैयार किया जाए, इसका चयन करना एक अच्छा अभ्यास नहीं है।
एरिक स्टिन

1
जैसे @EricStein ने कहा, आपको यह पीछे की ओर मिला है।
डैनमैन

20
दोस्तों, मैंने जो सवाल पूछा उसका कारण सही उत्तर होना है। आगे बढ़ो, एक उत्तर लिखो और मैं अपना दोष निकाल दूंगा। @EricStein
जोनाथन

4
@ जोनाथन एपिस जो मानव हाथों के माध्यम से उपभोग करने में आसान हैं, लगभग हमेशा अच्छे एपिस हैं। सही रूप में KISS बाहर फोन करने के लिए कुडोस
क्रिस Marisic

1
@ अक्षयहरमठ वह इस तथ्य का उल्लेख कर रहे हैं कि आप शरीर में कुछ और भेज सकते हैं, उदाहरण के लिए यदि आपने "इमेज / जेपीईजी" जैसे कंटेंट टाइप हेडर भेजे हैं तो आपको अपने संदेश में जेपीईजी डेटा शामिल करना होगा और इसमें कुछ और शामिल नहीं हो सकता है। यह
Shayaan
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.