आवेदन / json और अनुप्रयोग / x-www-form-urlencoded में अंतर


जवाबों:


187

पहला मामला वेब सर्वर को बता रहा है कि आप JSON डेटा पोस्ट कर रहे हैं जैसे:

{ Name : 'John Smith', Age: 23}

दूसरा विकल्प वेब सर्वर को बता रहा है कि आप URL में मापदंडों को एन्कोडिंग करेंगे:

Name=John+Smith&Age=23

17
सर्वर की तरफ से इसके क्या निहितार्थ हैं। मुझे x-www-form-urlencodedAJAX के अनुरोध जैसे वोट आदि के लिए स्टैक्वेरफ्लो और ट्विटर का उपयोग करने वाली साइटें दिखाई दे रही हैं JSON। मुझे लगता है कि यह सममित अनुरोध / प्रतिक्रिया जोड़ी यानी दोनों JSON के लिए बेहतर है।
यूजर

@ बफ़र मैं भी आपके सममित प्रश्न का उत्तर जानने के लिए उत्सुक हूं।
एडम जॉन्स

1
@AdamJohns: यह ब्लॉग पढ़ने लायक है, हालांकि यह "क्यों" का बिल्कुल जवाब नहीं देता है: homakov.blogspot.in/2012/06/…
उपयोगकर्ता

21
@ बफ़र मेरी समझ JSON का उपयोग कंटेंट टाइप के रूप में कर रही है, जब डेटा भेजा जाना अधिक जटिल है और इसमें बहुत अधिक पदानुक्रम शामिल है .. जबकि एन्कोडेड फ़ॉर्म url में सरल पैरामेट्स भेजने के लिए अच्छा है जो बैकएंड पर बहुत कोड के बिना पढ़ा जा सकता है। .. मुझे लगता है कि यह इसका उत्तर क्यों देता है।
अंकित श्रीवास्तव

@Medorator देर से टिप्पणी। उदाहरण के लिए, जब आप इसमें ऑब्जेक्ट्स की एक सरणी के साथ एक जटिल JSON ऑब्जेक्ट भेज रहे हैं, तो application/x-www-form-urlencodedसर्वर को भ्रमित करेगा (मेरे मामले में ज़हर का उपयोग कर अमृत) और परिणामस्वरूप ऑब्जेक्ट के कुछ अनुचित पार्सिंग (यह किसी तरह नेस्टेड सरणी में परिवर्तित हो जाता है) एक सूची के बजाय एक नक्शे के लिए वस्तुओं की)। का उपयोग application/jsonकरना इस मामले में सही विकल्प होना चाहिए।
xji

6

webRequest.ContentType = "एप्लिकेशन / x-www-form-urlencoded";

  1. कहाँ है आवेदन / x-www फार्म-urlencoded के नाम से हो?

    यदि आप HTTP GET अनुरोध भेजते हैं, तो आप क्वेरी पैरामीटर का उपयोग इस प्रकार कर सकते हैं:

    http://example.com/path/to/page? नाम = भाल और रंग = बैंगनी

    फ़ील्ड की सामग्री को क्वेरी स्ट्रिंग के रूप में एन्कोड किया गया है। application/x-www-form- urlencodedके नाम पिछले यूआरएल क्वेरी पैरामीटर से आते हैं लेकिन क्वेरी पैरामीटर के बजाय अनुरोध की जहां शरीर यूआरएल में है।

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

    उदा। फ़ील्ड 1 = मान 1 और फ़ील्ड 2 = मान 2

  2. इसे सरल अनुरोध कहा जा सकता है - प्रीफ्लाइट चेक को ट्रिगर न करें

    सरल अनुरोध में कुछ गुण होने चाहिए। अधिक जानकारी के लिए आप यहां देख सकते हैं । उनमें से एक यह है कि सरल अनुरोधों के लिए सामग्री-प्रकार हेडर के लिए केवल तीन मान हैं

    • आवेदन / x-www फार्म-urlencoded
    • बहुखण्डीय / फार्म-डेटा
    • पाठ / सादे

3. ज्यादातर फ्लैट परम पेड़ों के लिए, आवेदन / x-www-form-urlencoded की कोशिश की और परीक्षण किया है।

request.ContentType = "एप्लिकेशन / जसन; चारसेट = utf-8";

  1. डेटा json प्रारूप होगा।

axios और superagent , दो अधिक लोकप्रिय npm HTTP लाइब्रेरीज़, डिफ़ॉल्ट रूप से JSON निकायों के साथ काम करती हैं।

{
  "id": 1,
  "name": "Foo",
  "price": 123,
  "tags": [
    "Bar",
    "Eek"
  ],
  "stock": {
    "warehouse": 300,
    "retail": 20
  }
}
  1. "एप्लिकेशन / जसन" सामग्री-प्रकार प्रीफ़्लाइट अनुरोधों में से एक है

अब, यदि अनुरोध सरल अनुरोध नहीं है , तो ब्राउज़र स्वचालित रूप से यह जाँचने के लिए कि क्या यह मूल अनुरोध भेजने के लिए सुरक्षित है विकल्प विकल्प द्वारा मूल से पहले एक HTTP अनुरोध भेजता है । यदि यह ठीक है, तो वास्तविक अनुरोध भेजें। अधिक जानकारी के लिए आप यहां देख सकते हैं ।

  1. आवेदन / json शुरुआत के अनुकूल है। URL एनकोडेड एरेज़ एक बुरा सपना हो सकता है!
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.