URL-एन्कोडिंग बॉडीज़
डिफ़ॉल्ट रूप से, axios JavaScript ऑब्जेक्ट्स को JSON में क्रमबद्ध करता है। इसके बजाय, application/x-www-form-urlencoded फ़ॉर्मैट में डेटा भेजने के लिए, आप निम्न में से किसी एक तरीके का उपयोग कर सकते हैं।
ब्राउज़र
ब्राउज़र में, आप URLSearchParams API का उपयोग इस प्रकार कर सकते हैं:
const params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);
ध्यान दें कि
URLSearchParamsसभी ब्राउज़रों द्वारा समर्थित नहीं है (देखें caniuse.com), लेकिन एक polyfill उपलब्ध है (ध्यान रखें कि वैश्विक परिवेश को पॉलीफ़िल करें)।
वैकल्पिक रूप से, आप qs लाइब्रेरी का उपयोग करके डेटा को एनकोड कर सकते हैं:
const qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 }));
या दूसरे तरीके से (ES6),
'qs' से qs आयात करें;
const data = { 'bar': 123 };
const options = {
method: 'POST',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
data: qs.stringify(data),
url,
};
axios(options);
Node.js
क्वेरी स्ट्रिंग
node.js में, आप querystring मॉड्यूल का उपयोग इस प्रकार कर सकते हैं:
const querystring = require('querystring');
axios.post('http://something.com/', querystring.stringify({ foo: 'bar' }));
या 'URLSearchParams' 'url module' से इस प्रकार:
const url = require('url');
const params = new url.URLSearchParams({ foo: 'bar' });
axios.post('http://something.com/', params.toString());
आप qs लाइब्रेरी का भी उपयोग कर सकते हैं।
नोट: यदि आपको नेस्टेड ऑब्जेक्ट्स को स्ट्रिंग करना है, तो
qsलाइब्रेरी बेहतर है, क्योंकिquerystringविधि में इस उपयोग के मामले में ज्ञात समस्याएँ हैं (https://github.com/nodejs/node-v0.x-archive/issues/1665)।
🆕 स्वचालित क्रमांकन
यदि content-type हेडर application/x-www-form-urlencoded पर सेट है, तो Axios डेटा ऑब्जेक्ट को urlencoded फ़ॉर्मेट में स्वचालित रूप से क्रमांकित कर देगा।
यह ब्राउज़र और node.js दोनों में काम करता है:
const data = {
x: 1,
arr: [1, 2, 3],
arr2: [1, [2], 3],
users: [{name: 'Peter', surname: 'Griffin'}, {name: 'Thomas', surname: 'Anderson'}],
};
await axios.post('https://postman-echo.com/post', data,
{headers: {'content-type': 'application/x-www-form-urlencoded'}}
);
सर्वर इसे इस प्रकार संभालेगा
{
x: '1',
'arr[]': [ '1', '2', '3' ],
'arr2[0]': '1',
'arr2[1][0]': '2',
'arr2[2]': '3',
'arr3[]': [ '1', '2', '3' ],
'users[0][name]': 'पीटर',
'users[0][surname]': 'ग्रिफिन',
'users[1][name]': 'थॉमस',
'users[1][surname]': 'एंडरसन'
}
यदि आपके सर्वर फ्रेमवर्क का अनुरोध बॉडी पार्सर (जैसे express.js का body-parser) नेस्टेड ऑब्जेक्ट डिकोडिंग का समर्थन करता है,
तो आपको स्वचालित रूप से प्राप्त होगा वही सर्वर ऑब्जेक्ट जो आपने सबमिट किया था।
इको सर्वर उदाहरण (express.js):
var app = express();
app.use(bodyParser.urlencoded({ extended: true })); // url-एन्कोडेड बॉडीज़ का समर्थन करता है
app.post('/', function (req, res, next) {
res.send(JSON.stringify(req.body));
});
server = app.listen(3000);