# URL-Encoding Gövdeleri

Axios, varsayılan olarak JavaScript objelerini JSON a dizileştirir (serialize eder). Bunun yerine application/x-www-form-urlencoded formatı ile veri göndermek için, aşağıdaki seçeneklerden birini kullanabilirsiniz.

# Tarayıcı

Tarayıcı ortamında URLSearchParams (opens new window) API'sini aşağıdakine benzer şekilde kullanabilirsiniz:

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

Unutmayın ki URLSearchParams bazı tarayıcılar tarafından desteklenmemektedir. (bkz caniuse.com (opens new window)), ancak bunun için bir çoklu dolgu (polyfill) (opens new window) mevcut (global ortamı çoklu dolgulamayı unutmayın).

Alternatif olarak, veriyi qs (opens new window) kütüphanesi ile encode edebilirsiniz:

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

Veya başka bir şekilde (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);

# Node.js

# Sorgu dizesi

Node.js'de, querystring (opens new window) modülünü aşağıdaki gibi kullanabilirsiniz:

const querystring = require('querystring');
axios.post('http://something.com/', querystring.stringify({ foo: 'bar' }));

veya 'url modülü' (opens new window)'nden 'URLSearchParams' (opens new window) aşağıdaki gibi kullanılabilir:

const url = require('url');
const params = new url.URLSearchParams({ foo: 'bar' });
axios.post('http://something.com/', params.toString());

Ayrıca qs (opens new window) kütüphanesini de kullanabilirsiniz.

# NOT

querystring metotunun bu kullanım durumuyla ilgili bilinen sorunları olduğundan (https://github.com/nodejs/node-v0.x-archive/issues/1665), iç içe nesneleri dizileştirmeniz (serialize etmeniz) gerekiyorsa qs kitaplığı tercih edilebilir.

# Form verisi

Node.js'de form-data (opens new window) kütüphanesini aşağıdaki gibi kullanabilirsiniz.

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() })

Alternatif olarak, bir interceptor da kullanabilirsiniz:

axios.interceptors.request.use(config => {
  if (config.data instanceof FormData) {
    Object.assign(config.headers, config.data.getHeaders());
  }
  return config;
});
Last Updated: 2/24/2023, 9:22:20 AM