पोस्टमैन क्रोम: फॉर्म-डेटा, x-www-form-urlencoded और raw के बीच क्या अंतर है


222

मैं वेब सेवा के परीक्षण के लिए पोस्टमैन क्रोम एक्सटेंशन का उपयोग कर रहा हूं।

डेटा इनपुट के लिए तीन विकल्प उपलब्ध हैं।

मुझे लगता है कि rawJSON भेजने के लिए है।

अन्य दो के बीच क्या अंतर है, form-dataऔर x-www-form-urlencoded?


11
आज तक पोस्टमैन टूल में डेटा पोस्ट करने के लिए एक 4 वां विकल्प है - binary
आरबीटी

जवाबों:


237

ये W3C द्वारा परिभाषित विभिन्न प्रकार की सामग्री हैं। यदि आप सरल पाठ / ASCII डेटा भेजना चाहते हैं, तो x-www-form-urlencoded काम करेगा। यह डिफ़ॉल्ट है।

लेकिन अगर आपको गैर-एएससीआईआई पाठ या बड़े बाइनरी डेटा भेजना है, तो फॉर्म-डेटा इसके लिए है।

यदि आप सादा पाठ या JSON या किसी अन्य प्रकार की स्ट्रिंग भेजना चाहते हैं तो आप रॉ का उपयोग कर सकते हैं । जैसा कि नाम से पता चलता है, पोस्टमैन आपके कच्चे स्ट्रिंग डेटा को भेजता है क्योंकि यह बिना संशोधनों के है। आपके द्वारा भेजे जा रहे डेटा का प्रकार ड्रॉप-डाउन से सामग्री-प्रकार हेडर का उपयोग करके सेट किया जा सकता है।

जब आप अनुरोध पर गैर-पाठीय डेटा संलग्न करना चाहते हैं, तो बाइनरी का उपयोग किया जा सकता है, उदाहरण के लिए एक वीडियो / ऑडियो फ़ाइल, चित्र, या कोई अन्य द्विआधारी फ़ाइल।

आगे पढ़ने के लिए इस लिंक का संदर्भ लें: HTML दस्तावेजों में प्रपत्र


बाइनरी के बारे में क्या?
आरबीटी

मेरे पास एक फॉर्म है जिसमें 4 टेक्स्ट फ़ील्ड और 1 फ़ाइल अपलोड फ़ील्ड है, अब कृपया मुझे सुझाव दें कि पोस्टमैन में इन 5 फ़ील्ड मान को सबमिट करने के लिए कौन सा विकल्प (फॉर्म-डेटा या x-www-form-urlencoded) का उपयोग किया जाएगा? अग्रिम में धन्यवाद।
कमलेश

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

88

यह बेहतर व्याख्या करता है: डाकिया डॉक्स

शरीर का अनुरोध करें

अनुरोधों का निर्माण करते समय, आप अनुरोध के मुख्य संपादक के साथ काम करेंगे। डाकिया आपको लगभग किसी भी प्रकार का HTTP अनुरोध भेजने देता है (यदि आप कुछ नहीं भेज सकते हैं, तो हमें बताएं!)। बॉडी एडिटर को 4 क्षेत्रों में विभाजित किया गया है और शरीर के प्रकार के आधार पर अलग-अलग नियंत्रण हैं।

फार्म डेटा

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

urlencoded

यह एन्कोडिंग URL पैरामीटर में उपयोग किए जाने वाले के समान है। आपको बस कुंजी / मूल्य जोड़े दर्ज करने की आवश्यकता है और पोस्टमैन चाबियाँ और मूल्यों को ठीक से एन्कोड करेगा। ध्यान दें कि आप इस एन्कोडिंग मोड के माध्यम से फाइल अपलोड नहीं कर सकते हैं। प्रपत्र-डेटा और urlencoded के बीच कुछ भ्रम हो सकता है इसलिए पहले अपने API से जांच करना सुनिश्चित करें।

कच्चा

एक कच्चे अनुरोध में कुछ भी हो सकता है। पोस्टमैन पर्यावरण चर की जगह को छोड़कर कच्चे संपादक में दर्ज स्ट्रिंग को नहीं छूता है। आप पाठ क्षेत्र में जो कुछ भी डालते हैं वह अनुरोध के साथ भेजा जाता है। कच्चा संपादक आपको सही शीर्ष लेख के साथ स्वरूपण प्रकार सेट करने देता है जिसे आपको कच्चे शरीर के साथ भेजना चाहिए। आप सामग्री-प्रकार हेडर को मैन्युअल रूप से भी सेट कर सकते हैं। आम तौर पर, आप XML या JSON डेटा यहां भेज रहे होंगे।

बाइनरी

बाइनरी डेटा आपको उन चीजों को भेजने की अनुमति देता है जिन्हें आप पोस्टमैन में दर्ज नहीं कर सकते हैं। उदाहरण के लिए, छवि, ऑडियो या वीडियो फ़ाइलें। आप पाठ फ़ाइलें भी भेज सकते हैं। जैसा कि फॉर्म-डेटा अनुभाग में पहले उल्लेख किया गया है, यदि आपको इतिहास या संग्रह के माध्यम से एक अनुरोध लोड हो रहा है, तो आपको एक फ़ाइल को फिर से लिखना होगा।

अपडेट करें

द्वारा उठाई बाहर के रूप में VKK , WHATWG कल्पना कहना urlencoded रूपों के लिए डिफ़ॉल्ट एन्कोडिंग प्रकार है।

इन विशेषताओं के लिए अमान्य मान डिफ़ॉल्ट अनुप्रयोग / x-www-form-urlencoded स्थिति है। Enctype विशेषता के लिए अनुपलब्ध मान डिफ़ॉल्ट अनुप्रयोग / x-www-form-urlencoded स्थिति भी है।


5
डाकिया डॉक्टर गलत है। WHATWG का HTML5 कल्पना HTML.spec.whatwg.org/multipage// पर उपलब्ध है, जो स्पष्ट रूप से " एलिमेंट / x-www-form-urlencoded" रूप के तत्व तत्व के लिए एक डिफ़ॉल्ट मान को परिभाषित करता है। दूसरे शब्दों में "एप्लिकेशन / x-www-form-urlencoded" डिफ़ॉल्ट एन्कोडिंग है (HTTP शब्दों में सामग्री-प्रकार) एक वेब फ़ॉर्म डेटा स्थानांतरित करने के लिए उपयोग करता है, न कि मल्टीपार्ट / फॉर्म-डेटा। सामग्री प्रकार के मल्टीपार्ट / फॉर्म-डेटा के साथ फॉर्म सबमिट करने पर एक HTTP पोस्ट अनुरोध भेजने के लिए, किसी को इसे स्पष्ट रूप से निर्दिष्ट मान के रूप में निर्दिष्ट करना होगा।
VKK

तो हेडर के साथ भेजे गए फॉर्म-डेटा (पोस्टमैन यूआई में कुंजी-मूल्य जोड़े के साथ दर्ज) के बीच अंतर क्या है Content-Type: application/json; और कच्चे डेटा {foo: bar}को एक ही Content-Type: application/jsonहेडर के साथ जसन के रूप में दर्ज किया गया ?
इनगो

मुख्य-मूल्य जोड़े सामग्री-प्रकार के रूप में फॉर्म-डेटा के साथ, हेडर निर्दिष्ट करने पर भी फॉर्म-डेटा मल्टीपार्ट होता है और कच्चे सामग्री-प्रकार के साथ पाठ या जो भी आपने हेडर में निर्दिष्ट किया है, वह होगा।
avck

20

बहुखण्डीय / फार्म-डेटा

ध्यान दें। फ़ाइल अपलोड के बारे में अतिरिक्त जानकारी के लिए कृपया RFC2388 से परामर्श करें , जिसमें बैकवर्ड संगतता समस्याएं, "मल्टीपार्ट / फॉर्म-डेटा" और अन्य सामग्री प्रकार, प्रदर्शन मुद्दे आदि के बीच संबंध शामिल हैं।

प्रपत्रों के लिए सुरक्षा समस्याओं के बारे में जानकारी के लिए कृपया परिशिष्ट से परामर्श करें।

सामग्री प्रकार "अनुप्रयोग / x-www-form-urlencoded" बाइनरी डेटा या गैर-ASCII वर्णों वाले पाठ को बड़ी मात्रा में भेजने के लिए अक्षम है। सामग्री प्रकार "मल्टीपार्ट / फॉर्म-डेटा" का उपयोग उन प्रपत्रों को प्रस्तुत करने के लिए किया जाना चाहिए जिनमें फाइलें, गैर-एएससीआईआई डेटा और बाइनरी डेटा शामिल हैं।

सामग्री प्रकार "मल्टीपार्ट / फॉर्म-डेटा" RFC2045 में उल्लिखित सभी मल्टीमार्ट MIME डेटा धाराओं के नियमों का पालन करता है । "मल्टीआर्ट / फॉर्म-डेटा" की परिभाषा [IANA] रजिस्ट्री पर उपलब्ध है।

"मल्टीपार्ट / फॉर्म-डेटा" संदेश में भागों की एक श्रृंखला होती है, प्रत्येक एक सफल नियंत्रण का प्रतिनिधित्व करता है। भागों को प्रसंस्करण एजेंट को उसी क्रम में भेजा जाता है, जो दस्तावेज़ स्ट्रीम में संबंधित नियंत्रण दिखाई देते हैं। किसी भी डेटा में भाग की सीमाएं नहीं होनी चाहिए; यह कैसे किया जाता है यह इस विनिर्देश के दायरे से बाहर है।

सभी प्रकार के MIME प्रकारों के साथ, प्रत्येक भाग में एक वैकल्पिक "सामग्री-प्रकार" शीर्षलेख होता है जो "पाठ / सादे" के लिए डिफ़ॉल्ट होता है। उपयोगकर्ता एजेंटों को "सामग्री" टाइप करें हेडर, एक "चारसेट" पैरामीटर के साथ आपूर्ति करना चाहिए।

आवेदन / x-www फार्म-urlencoded

यह डिफ़ॉल्ट सामग्री प्रकार है। इस सामग्री प्रकार के साथ जमा किए गए प्रपत्र निम्नानुसार एन्कोड किए जाने चाहिए:

नियंत्रण नाम और मूल्य बच जाते हैं। अंतरिक्ष वर्णों को +', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by% HH ' द्वारा प्रतिस्थापित किया जाता है , एक प्रतिशत चिह्न और वर्ण के ASCII कोड का प्रतिनिधित्व करने वाले दो हेक्साडेसिमल अंक। लाइन ब्रेक को "सीआर एलएफ" जोड़े (यानी, %0D%0A'). The control names/values are listed in the order they appear in the document. The name is separated from the value by= 'और नाम / मूल्य जोड़े को' और 'द्वारा एक दूसरे से अलग किया जाता है।

application/x-www-form-urlencodedसर्वर पर भेजे गए HTTP संदेश का शरीर अनिवार्य रूप से एक विशाल क्वेरी स्ट्रिंग है - नाम / मान जोड़े एम्परसेंड (&) द्वारा अलग किए जाते हैं, और नाम मान प्रतीक (=) द्वारा मानों से अलग किए जाते हैं। इसका एक उदाहरण होगा:

MyVariableOne=ValueOne&MyVariableTwo=ValueTwo

सामग्री प्रकार "अनुप्रयोग / x-www फार्म-urlencoded" बाइनरी डेटा या पाठ गैर- ASCII वर्ण युक्त की बड़ी मात्रा में भेजने के लिए अक्षम है। सामग्री प्रकार "मल्टीपार्ट / फॉर्म-डेटा" का उपयोग उन प्रपत्रों को प्रस्तुत करने के लिए किया जाना चाहिए जिनमें फाइलें, गैर-एएससीआईआई डेटा और बाइनरी डेटा शामिल हैं।


15

अनुरोध में पोस्टमैन द्वारा पास किए गए कच्चे पाठ को देखने के लिए कुछ पूरक उदाहरण दिए गए हैं। आप इसे पोस्टमैन कंसोल को खोलकर देख सकते हैं:

यहां छवि विवरण दर्ज करें

फार्म डेटा

हैडर

content-type: multipart/form-data; boundary=--------------------------590299136414163472038474

तन

key1=value1key2=value2

एक्स-www फार्म-urlencoded

हैडर

Content-Type: application/x-www-form-urlencoded

तन

key1=value1&key2=value2

कच्चा पाठ / सादा

हैडर

Content-Type: text/plain

तन

This is some text.

कच्चा जसन

हैडर

Content-Type: application/json

तन

{"key1":"value1","key2":"value2"}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.