URL-Encoding Bodies

بەشێوەیەکی بنەڕەت، ئەکسیۆس ئۆبجێکتەکانی جاڤاسکریپت serialize ئەکات بۆ JSON. بۆ ناردنی داتا بە شێوەی application/x-www-form-urlencoded، ئەتوانی یەکێک لە بژاردانەی خوارەوە بەکاربهێنی.

وێبگەڕ

لە وێبگەڕدا، ئەتوانی ناوبەندی URLSearchParams بەکاربهێنیت وەک ئەمەی خوارەوە:

const params = new URLSearchParams();
params.append("param1", "value1");
params.append("param2", "value2");
axios.post("/foo", params);

تێبینی ئەوە بکە URLSearchParams لە هەموو وێبگەڕەکان پشتگیری نەکراوە (بڕوانە caniuse.com)، بەڵام polyfillـێک بەردەستە (دڵنایبەرەوە لە polyfill کردنی ژینگە گشتییەکە).

لە جیاتی ئەوە، ئەتوانی داتاکە encode بکەیت بەبەکارهێنانی کتێبخانەی qs:

const qs = require("qs");
axios.post("/foo", qs.stringify({ bar: 123 }));

یان بە ڕێگایەکی دیکە (ES6)،

import qs from "qs";
const data = { bar: 123 };
const options = {
  method: "POST",
  headers: { "content-type": "application/x-www-form-urlencoded" },
  data: qs.stringify(data),
  url,
};
axios(options);

نۆد

کتێبخانەی Query string

لە نۆددا، ئەتوانی querystring module بەکاربهێنیت بەم شێوازەی خوارەوە:

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 پەسندترە ئەگەر ئەتەوێ stringifyـی ئۆبجێکتیێکی قوڵ بکەیت، چونکە شێوازی querystring چەند کێشەیەکی دیاری هەیە بۆ ئەم بەکارهێنانە(https://github.com/nodejs/node-v0.x-archive/issues/1665)

شێوازی Form data

لە نۆددا، ئەتوانی کتێبخانەی form-data بەکاربهێنیت بەم شێوازەی خوارەوە:

const FormData = require("form-data");

const form = new FormData();
form.append("my_field", "my value");
form.append("my_buffer", new Buffer(10));
form.append("my_file", fs.createReadStream("/foo/bar.jpg"));

axios.post("https://example.com", form, { headers: form.getHeaders() });

لەجیاتی ئەوە، ئەتوانی ناوەندگیرێک بەکاربهێنیت:

axios.interceptors.request.use((config) => {
  if (config.data instanceof FormData) {
    Object.assign(config.headers, config.data.getHeaders());
  }
  return config;
});