Axios: рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди/x-www-form-urlencoded

рдХреЛ рдирд┐рд░реНрдорд┐рдд 28 рдЬреВрди 2016  ┬╖  220рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: axios/axios

рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди/x-www-form-urlencoded рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ

var data = Querystring.stringify({ 
                "grant_type": "password",
                "username": login,
                "password": password
            });
axios.post(Urls.login, data);

рд▓реЗрдХрд┐рди рдЕрдиреБрд░реЛрдз рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рд╣реЗрдбрд░ рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:

  var data = Querystring.stringify({ 
                "grant_type": "password",
                "username": login,
                "password": password
            });
        return axios({
            method: 'post',
            url: Urls.login,
            data: data,
            headers: {
                'Content-type': 'application/x-www-form-urlencoded'
            }
        });

рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ

jQuery рдХреЛрдб рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

$.ajax({
            url: Urls.login,
            data: data,
            type: "POST",
            headers: {
                'Content-type': 'application/x-www-form-urlencoded'
            }
        });

рдореИрдВ рдЗрд╕ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╖рддрдВрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп qs рдЬреИрд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

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

рд╕рднреА 220 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ рд╡реИрд╕рд╛ рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдмрдЧ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджреВрдБрдЧрд╛ред

рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рд╣реИред рдЬрдм рдореИрдВ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдХреЗрд╡рд▓ рдЙрд╕ рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рднреЗрдЬ рд╕рдХрддрд╛ред

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ:

axios.interceptors.request.use(function (config) {
        var token = LoginStore.getJwt();
        if (token) {
            config.headers["Authorization"] = "Bearer " + token;
        }

            return config;
        }, function (error) {    
            return Promise.reject(error);
        });

рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдореИрдВ 'рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░' рд╢реАрд░реНрд╖рд▓реЗрдЦ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд░реНрд╡рд░ рдкрд░ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдореИрдВ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХрд╛ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ?

рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рдореЗрд░реЗ рд╕рд╛рде рднреА рд╡рд╣реА рджрд┐рдХреНрдХрдд рд╣реИред Axios рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЛ рдирд╣реАрдВ рднреЗрдЬрддрд╛ рд╣реИред

рдпрд╣ рдЕрдкрд░рд╛рдзреА рд░реЗрдЦрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ тЖТ https://github.com/mzabriskie/axios/blob/master/lib/adapters/xhr.js#L117

рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдХреНрдпреЛрдВ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ Content-Type рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рд╕реНрд╡рдпрдВрд╕рд┐рджреНрдз рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реЛрдВ рддреЛ рдЕрдкрдиреЗ data рдХреЛ data || {} рдореЗрдВ рдмрджрд▓ рджреЗрдВред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдбреЗрдЯрд╛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Content-Type рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рддрд░реНрдХ рдЬрдм requestData рд╣реИ рддреЛ undefined рдЗрд╕ рдХрдорд┐рдЯ рдореЗрдВ рдЖрдпрд╛ https://github.com/mzabriskie/axios/commit/9096d34186d5a5148f06c07854b21d6cc8035e96ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдХреЛрдИ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреНрдпреЛрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред

рдореИрдВ рд╡реЛрдЯ рджреВрдВрдЧрд╛ рдпрджрд┐ requestData undefined рд╣реИ рдФрд░ рд╡рд┐рдзрд┐ PUT , POST рдпрд╛ PATCH рд╣реИ рдФрд░ рдХреЛрдИ Content-Type рдирд╣реАрдВ рд╣реИ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд┐рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ Content-Type рд╕реЗ application/x-www-form-urlencoded ред рдЕрдиреНрдпрдерд╛ рдЬреЛ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЙрд╕рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░реЗрдВред

@mzabriskie рд▓реЗрдХрд┐рди @alborozd рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ, data рдХреЛ Querystring.stringify({...}) рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП requestData undefined рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣реИ рдирд╛?

@mzabriskie рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рд╣реА рд╣реИрдВред рдЬрдм рдореИрдВ рдЕрдиреБрд░реЛрдз рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдлрд┐рдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдЦрд╛рд▓реА рд╣реИред рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рдореИрдВ рдбреЗрдЯрд╛ рдФрд░ рд╣реЗрдбрд░ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рддреЛ, рд╢рд╛рдпрдж рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдЖрдк рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕ рдЪреАрдЬ рдХреЛ рдХреНрд░реИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд░ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдбрд┐рдлрд╝реЙрд▓реНрдЯ axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдкреЛрд╕реНрдЯ рдмреЙрдбреА рдореЗрдВ рдХреЛрдИ рдкреЗрд▓реЛрдб рдирд╣реАрдВ рднреЗрдЬ рд╕рдХрддрд╛ред

рдореИрдВрдиреЗ URLSearchParams рдХреЗ рд╕рд╛рде рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ:

    var params = new URLSearchParams();
    params.append('email', email);
    return (dispatch) => {
        axios.post('/stack/' + uri, params)

рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдлрд╛рд░реА рдФрд░ рдЖрдИрдИ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдареАрдХ рд╣реИ :) рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдкрд░ рдЕрдЧрд▓рд╛ рдЕрдкрдбреЗрдЯред рдкреВрд░реНрдг рд╕рдорд░реНрдерд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдбреЗрдЯрд╛ рдХреЛ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬрдирд╛ рд╣реИред
data: "flashcard=" + JSON.stringify(flashcard) + "&stackUri=" + stackUri ред рдпрд╣ рджрд░реНрдж рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп qs рдЬреИрд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

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

рдпрд╣ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдореИрдВ "Querystring" рдпрд╛ "qs" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ рддреЛ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ? рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣реЗрдбрд░ ['Content-Type'] = 'application/x-www-form-urlencoded' рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЗ рдХрд╛рд░рдг рдЦрд╛рд▓реА рд╣реИред

рдпрд╣рд╛рдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЖрдЬ 1 рдШрдВрдЯреЗ рдЦреЛ рджрд┐рдП рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкреЛрд╕реНрдЯ рдПрдкреАрдЖрдИ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЬрдм рддрдХ рдореИрдВрдиреЗ рдЙрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рджрд┐рд▓рд╛рдпрд╛) ... рдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрд╣реАрдВ рдФрд░ рдЬрд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ?

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ ... рдЕрднреА рднреА рдареАрдХ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ ...

рдХреГрдкрдпрд╛ @nickuraltsev рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рджреНрд╡рд╛рд░рд╛ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП +1ред

рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП qs рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдПрдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

import qs from 'qs';

axios.interceptors.request.use((request) => {
  if (request.data && request.headers['Content-Type'] === 'application/x-www-form-urlencoded') {
      request.data = qs.stringify(request.data);
  }
  return request;
});

рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП +1ред

hyanmandian рдиреЗ 14 рдШрдВрдЯреЗ рдкрд╣рд▓реЗ рдЯрд┐рдкреНрдкрдгреА рдХреА
рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП qs рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдПрдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдмрдврд╝рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ IMHO рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдЖрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдХреЗрд╡рд▓ data: {} рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реЗрдбрд░ рдХреЛ рдирд╣реАрдВ рдЫреЛрдбрд╝рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдпрд╣реА рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛:

import request from 'axios'

export const playSound = (soundFile) => (dispatch) => {
    dispatch(playSoundPending());
    return request
    .get(`/play/audio/${soundFile}`, { headers: {'Content-Type': 'audio/x-wav'}, data: {} })
    .then(response => response.data)
    });
};

рдЗрд╕рдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм рдореЗрдВ рдЕрдиреБрд░реЛрдз рд╣реЗрдбрд░ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП Content-Type рдХреЛ application/json рд╕реЗ audio/x-wav рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рддрдХ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдореИрдВ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреЛрдИ рдорджрдж?

рдореИрдВрдиреЗ encodeURIComponent рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХреА:

рд╕реНрдЯреЗрдЯрд┐рдХ рдЧреЗрдЯрдЯреЛрдХрди (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо, рдкрд╛рд╕рд╡рд░реНрдб) {
рд╡рд╛рдкрд╕реА рдЕрдХреНрд╖({
рд╡рд┐рдзрд┐: 'рдкреЛрд╕реНрдЯ',
рдпреВрдЖрд░рдПрд▓: 'рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ',
рдбреЗрдЯрд╛: Username=${**encodeURIComponent**(username)}& password=${**encodeURIComponent**(password)}& Grant_type=password
})

рдЯрдХреНрдХрд░ред рдХреЛрдИ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдорд╛рди рд▓реЗрдЧрд╛ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рдЪреВрдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕рдХрд╛ рд╣рдореЗрд╢рд╛ рд╕рдореНрдорд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред Axios рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдЪреВрдХ рдХреА рдЕрдирджреЗрдЦреА рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЧрд░реАрдм рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреИрджрд╛ рд╣реЛ рд░рд╣реА рд╣реИрдВред

рдпрд╣рд╛рдБ рдПрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд░реНрдЬ рд╣реИ рдЬрд╣рд╛рдБ рдпрд╣ рд╣реБрдЖ: https://github.com/mzabriskie/axios/pull/195/files

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП +1ред
рдореЗрд░реЗ рдЯреЙрдордХреИрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ 3 рдШрдВрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╡реНрдпрддреАрдд рд╣реБрдЖ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдХреЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдореЗрд░реЗ рд╣реЗрдбрд░ рдЪреЛрд░реА рд╣реЛ рдЧрдП рдереЗред рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдиреЗ рдорджрдж рдирд╣реАрдВ рдХреАред рднрдЧрд╡рд╛рди рд╣реЗрдбрд░ рдмрдЪрд╛рдУ!

@polyakoff рдЖрдкрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛? рдпрд╛ рдЖрдк рдЕрднреА рднреА рдЕрдЯрдХреЗ рд╣реБрдП рд╣реИрдВред рдореИрдВрдиреЗ рдЬреЛ рджреЗрдЦрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд░реБрдХ-рд░реБрдХ рдХрд░ рд╣реЛрддреА рд╣реИ

@usopan рдЕрднреА рднреА рдЕрдЯрдХрд╛ рд╣реБрдЖ рд╣реИред

рдореИрдВ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдЗрд╕реЛрдореЙрд░реНрдлрд┐рдХ-рдлрд╝реЗрдЪ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ред
рдЕрдзрд┐рдХрд╛рдВрд╢ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдкрд░ рдЪреАрдЬреЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреА рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдХреБрдЫ рд╕рдлрд╛рд░реА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрдиреЗ рд▓рдЧрд╛ рд╣реИ рдХрд┐ рд╕рдлрд╛рд░реА рдореБрдЭрд╕реЗ рдкрдВрдЧрд╛ рд▓реЗ рд░рд╣реА рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП +1ред

рдореБрдЭреЗ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ред рд╕рдорд╛рдзрд╛рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИред
рдХреНрд░реЛрдо рдЙрдкрдпреЛрдЧ рдореЗрдВ - https://github.com/ljharb/qs рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЬреЗрд╕рди рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдФрд░ рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рд╕рдлрд╛рд░реА рдЙрдкрдпреЛрдЧ рдореЗрдВ - рдлреЙрд░реНрдордбрд╛рдЯрд╛ рд╢рд░реАрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдХреЛрдИ рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╕реЗрдЯ рди рдХрд░реЗрдВ

рдЖрдк рд╕реЛрдЪ рднреА рдирд╣реАрдВ рд╕рдХрддреЗ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдореБрджреНрджрд╛ рдЖрдзреЗ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдХреИрд╕реЗ рдареАрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ред

рд╡рд╛рд╣ рдЕрдЪреНрдЫрд╛ рдореБрджреНрджрд╛! рдЕрднреА рднреА рдЕрдкрдбреЗрдЯ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рд╣реИ тШХя╕П

рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реИред

рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реИ + 1

+1

+1

+1

+1

+1

+1

+1

+1

+1

рдХреЙрдиреНрд╕реНрдЯ рдХреНрд╡реЗрд░реАрд╕реНрдЯреНрд░рд┐рдВрдЧ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдХреНрд╡реЗрд░реАрд╕реНрдЯреНрд░рд┐рдВрдЧ');

рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ(){
рд╡рд░ _рдпрд╣ = рдпрд╣;
рдпрд╣ред$http({
рдпреВрдЖрд░рдПрд▓: рдпреВрдЖрд░рдПрд▓,
рд╡рд┐рдзрд┐: 'рдкреЛрд╕реНрдЯ',
рдбреЗрдЯрд╛: querystring.stringify ({
рдИрдореЗрд▓: рдИрдореЗрд▓,
рдкрд╛рд╕рд╡рд░реНрдб: рдкрд╛рд╕
}),
рд╢реАрд░реНрд╖рд▓реЗрдЦ: {
'рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░': 'рдПрдкреНрд▓рд┐рдХреЗрд╢рди/x-www-form-urlencoded'
}
}).рдлрд┐рд░ (рдлрд╝рдВрдХреНрд╢рди (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛);
}).рдХреИрдЪ (рдлрд╝рдВрдХреНрд╢рди (рддреНрд░реБрдЯрд┐) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рддреНрд░реБрдЯрд┐);
});
}

+1

+1

+1

рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Content-Type: application/x-www-form-urlencoded рдХреЗ рд╕рд╛рде рднреЗрдЬрд╛ рдЧрдпрд╛ рдХреЛрдИ рднреА рдЕрдиреБрд░реЛрдз рд╣реИ:

  • рдкреЗрд▓реЛрдб рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдиреНрдХреЛрдб рдирд╣реАрдВ рдХрд░рдирд╛
  • рд╣реЗрдбрд░ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рдирд╛, рднрд▓реЗ рд╣реА рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб, рдЕрднреА рдХреЗ рд▓рд┐рдП, data: {} рд╕реЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╣реЗрдбрд░ рд╕реЗрдЯ рд╣реЛ рдЬрд╛рдП, рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдз рдбреЗрдЯрд╛ рдкреЗрд▓реЛрдб рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░реЗрдВ

рдореИрдВ рдЕрдкрдирд╛ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

import qs from 'qs'
...

const instance = axios.create({
  baseURL: config.api.host,
  responseType: config.api.responseType,
  timeout: config.api.timeout,
  data: {},
})

instance.interceptors.request.use((req) => {
  if (req.method === 'post') {
    req.headers['Content-Type'] = config.api.defaults.postContentType
    req.data = qs.stringify(req.data)
  }

  return req
}, (error) => Promise.reject(error))

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рд╣реИрд▓реЛ рджреЛрд╕реНрддреЛрдВ! рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдореБрдЭреЗ рдПрдХ рдХрд╛рдВрдЯрд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЫреЛрдЯреА рджреЗрд╢реА рдХреНрд╡реЗрд░реА-рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдпрд╣ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ 'рдкреИрдЯрд░реНрди' рд╣реЛрдЧрд╛? @mzabriskie рдХреНрдпрд╛ рдЖрдк рдРрд╕реА рдЪреАрдЬрд╝ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ?

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП 3 рдШрдВрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдмрд┐рддрд╛рдПрдВ .. @ Maxwell2022 рдХреНрдпрд╛ рдЖрдк рдХреБрдЫ рдирдореВрдирд╛ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

+1

1

+1

@bsjaffer рдореИрдВрдиреЗ рдХреЛрдб рдирдореВрдирд╛ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЖрдк рдФрд░ рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

@ Maxwell2022 рдореИрдВ рдЕрдм рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рд╣реВрдБред

+1

+1

+1

+1

+1

+1

+1

++1

рдмрд╕ рдпрд╣ рдХрд░реЛ, рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИред

let details = {
      key1: 'data1',
      key2: `data2`,
      key3: `data3`,
    };

    var formBody = [];
    for (var property in details) {
      var encodedKey = encodeURIComponent(property);
      var encodedValue = encodeURIComponent(details[property]);
      formBody.push(encodedKey + "=" + encodedValue);
    }
    formBody = formBody.join("&");

    const URL = `PUT-YOUR-API-URL-OVER-HERE`;
    return axios({
      method: 'POST',
      url: URL,
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      },
      data: formBody,
    })
    .then(res => res.data)
    .catch(error => { throw error });

+1

рд╣рд╛рдБ, рдЖрдкрдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛, +1

+1

+1

+1, рд░реЗрдЬреНрдиреЙрд░реНрдб рдХреЗ рд╕рдорд╛рдзрд╛рди рдиреЗ рдЬрд╛рджреВ рдХрд┐рдпрд╛ (рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХрд░рдирд╛):
const config = { headers: { 'Content-Type': 'multipart/form-data' }, data: {} };

@bruddah рдХреВрд▓, рдЦреБрд╢реА рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ред

_рдореЗрд░реЗ OnePlus ONEPLUS A3003 рд╕реЗ FastHub рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреЗрдЬрд╛ рдЧрдпрд╛ _

+1

qs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛:

import axios from 'axios';
import querystring from 'querystring';

const data = querystring.stringify({id:32, name:'john'});
axios.post('http://example.com/posturl', data)

рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдПрдЪрдЯреАрдЯреАрдкреА рдЕрдиреБрд░реЛрдз рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХреНрд╕рд┐рдУрд╕ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреЛрд╕реНрдЯ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреЛрдб рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╣реА рдХрд░рддрд╛ рд╣реИред рдпрд╣ {id:32, name:'john'} рд▓реЗрддрд╛ рд╣реИ рдФрд░ id=32&name=john рдЬреИрд╕рд╛ рдХреБрдЫ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ axios рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

рдЖрдк рдирд┐рдореНрди рдЕрдиреБрд░реЛрдз рдХрд░рдХреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

axios.post('http://example.com/posturl', 'id=32&name=john')

рдЗрд╕рдХрд╛ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕реЗ рдЦреЛрд▓реЗ рд╣реБрдП рдЕрднреА рднреА рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ....

+1

+1

рд╣реЗ рд▓реЛрдЧреЛрдВ! рдЖрдк рдЗрд╕реЗ рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХреНрдпреЛрдВред

get (url, data) {
    return axios({
      method: 'get',
      url: url,
      baseURL: 'http://xxxxx/api',
      timeout: 10000,
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
      },//this is important !
      data: data,//this is important !
      params: data//this is important !
    }).then(
      (response) => {
        console.log(response)
        return checkStatus(response)
      }
    )
  }

рдПрдХ рдкреИрдЪ рдЕрдиреБрд░реЛрдз рдореЗрдВ _Content- Type:application/json-patch+json_ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ ( RFC6902 рдХреЗ рдмрд╛рдж),
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ (рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╕рд╣реА рдкреНрд░рдХрд╛рд░ рд╣реИ):

axios.patch(
          url,
          data,
          { headers: { 'Content-Type': 'application/json-patch+json;charset=UTF-8' } }  
          ))

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЗ рд╣реЗрдбрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдмрд╕ рдЕрдкрдиреЗ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

config.header['yourheader'] = value;

рдХреЗ рдмрдЬрд╛рдп

config.header = {'yourheader': value}

@ рдбреЗрд╡рд┐рдб рдЬрд┐рдпрд╛рдВрдЧ 7 рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

static register(token, email, lang)
{
        let config = { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }; // we do it to send SIMPLE post eequest (to avoid send CORS OPTIONS request before post)
        let params = new URLSearchParams(); // and we cannot send json but params are transform to  url-style
        params.append('email', email);
        params.append('lang', lang);

        return axios.post(ENV.API_URL + '/device/' + token + '/register', params, config);
}

рджрд┐рд▓рдЪрд╕реНрдк рдЪрд┐рддреНрд░ рдпрд╣рд╛рдБ CORS рдорд╛рдорд▓реЛрдВ рдХреЛ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИред рдЬрдм рд╣рдо SIMPLE рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ рддреЛ рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рд░рд▓ рдЕрдиреБрд░реЛрдз рдЕрдиреБрд░реЛрдз рд╣реИ рдЬреЛ GET, HEAD, POST рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╣реЗрдбрд░ 'рдХрдВрдЯреЗрдВрдЯ-рдЯрд╛рдЗрдк ' рд╣реИ рдЬреЛ application/x-www-form-urlencoded , multipart/form-data , рдпрд╛ text/plain рдФрд░ рдХрд┐рд╕реА рднреА рдХрд╕реНрдЯрдо рд╣реЗрдбрд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред

рдмрд╕ рдпрд╣ рдХрд░реЛ

const data = {name: 'my name'}
const form = 'data=' + JSON.stringify(data)
axios.post('/my_url', form)

рд╕рдВрдкрд╛рджрд┐рдд
рдЯрд╛рдЗрдкреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЦреЗрдж рд╣реИред рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдореИрдВ рдЗрд╕реЗ рдорд╣реАрдиреЛрдВ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдореИрдВ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ рдХрд┐ рд╕рд░реНрд╡рд░ рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ data рдкрд░рдо рд╣реИ

...
 $data = json_decode($_POST['data'], 1);
 echo $data['name']; // my name
...

рдПрдХ рд╕реНрд╡рдЪреНрдЫ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЯрдХреНрдХрд░, рд╕рд╛рде рд╣реА рдорджрдж рдХрд░рдиреЗ рдХреЛ рддреИрдпрд╛рд░ред

@jesusantguerrero
рдмрд╕ рдпрд╣ рдХрд░реЛ

рдХреЙрдиреНрд╕реНрдЯ рдбреЗрдЯрд╛ = {рдирд╛рдо: 'рдореЗрд░рд╛ рдирд╛рдо'}
рдХреЙрдиреНрд╕реНрдЯ рдлреЙрд░реНрдо = 'рдбреЗрдЯрд╛ =' + JSON.stringfy (рдбреЗрдЯрд╛)
axios.post('/my_url', рдлреЙрд░реНрдо)

рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдКрдкрд░ JSON.stringify ^^рдЯрд╛рдЗрдкреЛ рд╣реИред

рдЖрдк рдореЗрдВ рд╕реЗ рдЬреЛ Node.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдзрд╛рдЧреЗ рдореЗрдВ рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдЬреЛрдбрд╝рд╛ рдФрд░ Node.js рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рджрд┐рдпрд╛

рдпрд╣ рд╕рдмрд╕реЗ рд╕рд╛рдл рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рдЖ рд╕рдХрддрд╛ рд╣реВрдВред

import { URLSearchParams } from 'url';

async function auth() {
  try {
    const config = {
      headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    };
    const params = new URLSearchParams();
    params.append('grant_type', 'client_credentials');
    params.append('client_id', configuration.yelpClientId);
    params.append('client_secret', configuration.yelpClientSecret);

    const { data } = await axios.post(
      YELP_AUTH_ENDPOINT,
      params.toString(),
      config,
    );

    return data;
  } catch (error) {
    console.log(error.response.data);
    return {};
  }
}

рдбреЗрдЯрд╛ рдХреЗ рдмрдЬрд╛рдп рдкреИрд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

axios({
    method: 'post',
    url: '/my/api',
    headers: {
        'Content-type': 'application/x-www-form-urlencoded'
    },
    params: {
        'grant_type': 'code',
        'client_id': '1231453',
        'client_secret': 'THIS_IS_THE_SECRET'
    }
})
    .then((response) => {
        console.log(response);
    })
    .catch((error) => {
        console.log(error);
    }
);

@skuarch
рдбреЗрдЯрд╛ рдХреЗ рдмрдЬрд╛рдп рдкреИрд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдЕрдЧрд░ рд╡рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдм рддрдХ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд╛рдл рд╕рдорд╛рдзрд╛рди рд╣реИред

@oshalygin рдпрд╣ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ рдкреИрд░рд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдкреЛрд╕реНрдЯ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рднреЗрдЬрддрд╛ рд╣реИред

рдПрдХ рдЕрдЬрд╛рдХреНрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд░реВрдк рдкреЛрд╕реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рд╕рдЪ рдореЗрдВ?

1

рдХрд┐рд╕реА рдХреЛ рднреА рдкрддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди/рдЬреЗрд╕рди рдкрд░ рдХреМрди рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред

axios.post(`${DOMAIN}${url}`,params, {'headers': {"Content-Type": "application/json;charset=UTF-8"}})

рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ред

@hellomrbigshot рд╢рд╛рдпрдж CORS рд╕рдорд╕реНрдпрд╛ (рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝реЗрдВ, рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рднреА)

рдореЗрд░реЗ рд▓рд┐рдП рдПрдХреНрд╕рд┐рдпреЛрд╕ рдореЗрдВ рдХреЛрдб рдХреА рдкрд░реЗрд╢рд╛рдиреА рдмрд┐рдЯ (URLSearchParams рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдкреЗрд▓реЛрдб рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИ) рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ

        if (utils.isURLSearchParams(data)) {
          setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
          return data.toString();
        }
        if (utils.isObject(data)) {
          setContentTypeIfUnset(headers, 'application/json;charset=utf-8');
          return JSON.stringify(data);
        }
        return data;
      }

рдЗрд╕рд▓рд┐рдП рдпрджрд┐ data рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рд╣реИ рдЬреЛ URLSearchParam рдирд╣реАрдВ рд╣реИ (рдпрд╛ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЧрдИ рдХреБрдЫ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ - рдлреЙрд░реНрдордбрд╛рдЯрд╛ рд╕реВрдЪреА рдореЗрдВ рд╣реИ рдФрд░ рдХрдЪреНрдЪреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ) рддреЛ рдпрд╣ JSON.stringified рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╣реЗрдбрд░ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди/рдЬреЗрд╕рди рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред
рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рдореИрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП adeelibr рдХреА 4 рдЬреБрд▓рд╛рдИ рдХреА рдЯрд┐рдкреНрдкрдгреА рд╡рд╣ рд╣реИ рдЬреЛ рдореЗрд░реЗ рдФрд░ рдореЗрд░реЗ рдлреЙрд░реНрдо рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреА рд╣реИред

рдЙрдиреНрд╣реЗрдВ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдкреНрд░рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред
рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рдпрд╣ рдореЗрд░рд╛ Vue + axios рдХреЛрдб рд╣реИ

Vue.prototype.$http = axios;
new Vue({
    el: '#root',
    data: {
        site_url: params.site_url,
        name: '',
        description: ''
    },
    methods:{
        onSubmit(){
            var url = this.site_url + 'project/create';
            this.$http.post( url, {
                name: this.name,
                description: this.description
            } ).then(
                response => console.log(response.data)
            );
        }
    },
    mounted(){

    }
});```
Here this.$http means axios. I using axios instead of vue resource.


My Server Side Code

рдЕрдЧрд░ (рдЬрд╛рд░реАрдХрд░реНрддрд╛ ($ _POST)) {
$fields_to_add = рд╕рд░рдгреА ('рдирд╛рдо', 'рд╡рд┐рд╡рд░рдг');
$рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ = json_decode(file_get_contents("php://input"), true);
foreach ($рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ $k => $v рдХреЗ рд░реВрдк рдореЗрдВ) {
рдЕрдЧрд░ (in_array($k, $fields_to_add)) {
$_POST[$k] = $v;
}
}
рдЗрдХреЛ json_encode ($ _ POST);
рдмрд╛рд╣рд░ рдЬрд╛рдПрдВ();
} рдЕрдиреНрдп{
рдЗрдХреЛ json_encode (рд╕рд░рдгреА ('рд╕рдВрджреЗрд╢' => 'рдЕрдорд╛рдиреНрдп рдЕрдиреБрд░реЛрдз'));
рдмрд╛рд╣рд░ рдЬрд╛рдПрдВ();
}
```

рдлрд╝реАрд▓реНрдб рдирд╛рдореЛрдВ рдХреЛ рдлрд╝реАрд▓реНрдб рдирд╛рдо рдХреА рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦреЗрдВред рдпрд╣ рд╕реНрд╡рддрдГ рд╣реА рдЗрд╕реЗ рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛
рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛

+1

+1

+1

OMG рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдХреБрдЫ рдПрдкреНрд▓рд┐рдХреЗрд╢рди/x-www-form-urlencoded рдлреЙрд░реНрдо рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ POST рдЕрдиреБрд░реЛрдз рднреЗрдЬрдирд╛ рдЗрд╕ рддрд░рд╣ рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рд╣реИред рдореБрдЭреЗ рд░реАрдбрдореЗ рдХреЛ рдХрдИ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдЧрд▓рдд рд╕рдордЭ рд╣реИ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ qs.stringify (), рдкреИрд░рд╛рдореНрд╕ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдлрд┐рд▓рд╣рд╛рд▓, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдзрд┐рдпрд╛рдВ x-www-form-urlencoded рдкреНрд░рдкрддреНрд░ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ рдЬреИрд╕реЗ:

  • axios#post(url[, data[, config]])
  • axios#put(url[, data[, config]])
  • axios#patch(url[, data[, config]])

+1

рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛!

рдпрд╣ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдЦреБрд▓рд╛ рд╣реИ... рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдПред рдкреБрд░рд╛рдирд╛ рдЕрдиреБрд░реЛрдз lib рдЗрд╕реЗ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рдерд╛ред

+1

+1

+1

рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреГрдкрдпрд╛ рдпрд╣рд╛рдВ рдкрдврд╝реЗрдВ: https://github.com/axios/axios#using -applicationx-www-form-urlencoded-format

рдпрд╣рд╛рдБ рдПрдХ рдлрд┐рдХреНрд╕ рд╣реИ:

  1. рдпрд╣рд╛рдВ рдЬрд╛рдПрдВ: https://github.com/WebReflection/url-search-params

  2. рдЖрдк рдЗрд╕реЗ npm рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдмрд╕ рдпрд╣рд╛рдВ рд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/WebReflection/url-search-params/blob/master/build/url-search-params.js

  3. рдпрджрд┐ рдЖрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдмрд╕ рдЗрд╕реЗ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред

//For e.g. in your index.html, 
<script src="url-search-params.js"></script>
  1. рдлрд┐рд░ рдЗрд╕ рддрд░рд╣ рдПрдХ POST рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ:
var params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params)
.then(function (response)
                {
                    console.log(response.data);
                })
                .catch(function (error)
                {
                    console.log(error);
                });

рдпрд╣ рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛! :+1:

@aditya43 рдзрдиреНрдпрд╡рд╛рдж!

рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реАрдзреЗ рдПрдХреНрд╕рд┐рдУрд╕ рдЬреАрдердм рдкреЗрдЬ рд╕реЗ рдЖрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдПрдиреНрдХреЛрдбреЗрдб рдпреВрдЖрд░рдПрд▓ рдЦреБрдж рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

рдпрд╣ рдмрдЧ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ, рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

@ DZuz14 рдореИрдВ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рддрд╛ рд╣реВрдБ рдФрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП axios рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВред
рдпрд╣ рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

+1

Axios рдмреЗрдХрд╛рд░ рд╣реИ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

+1

рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ!

https://www.npmjs.com/package/form-data-urlencoded

import getFormData from 'form-data-urlencoded';

let data = getFormData({"_csrf": 'wrwrwrvwg4657rhed4hehe4',
                            "Res1[Test1]": "segf96767", 
                            "Res2[Test2]": "hello"});
let options = {
     method: 'POST',
    headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' },
    url: 'http://fhfhfhfh/455454545/fhfhfhf',
    data
};

axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
axios(options).then(function (response) {
              console.log(response);
    }).catch(function (error) {
             console.log(error);
        });

рдореИрдВрдиреЗ "рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░" рдореЗрдВ рд╡рд░реНрдгрд╕реЗрдЯ (рдпреВрдЯреАрдПрдл -8) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд "рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░" рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ред
рдЕрдВрдд рдореЗрдВ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

import axios from 'axios'
import qs from 'qs'

axios.interceptors.request.use((request) => {
  if (request.data && (request.headers['Content-Type'].indexOf('application/x-www-form-urlencoded') !== -1)) {
    request.data = qs.stringify(request.data)
  }
  return request
})

axios({
  method: 'POST',
  url,
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
  },
  data
}).then(() => {
// DO SOMETHING
})

рдореБрдЭреЗ рдХреЗрд╡рд▓ рдХреЙрд░реНрд╕ рдорд╛рдорд▓реЗ рдорд┐рд▓реЗ, рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрд░реЛрдз рд╣реЗрдбрд░ рднреЗрдЬрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛ рдХреНрд░реЙрд╕-рдбреЛрдореЗрди рд╡рд┐рдлрд▓рддрд╛ рд╕реЗрдЯ рдХрд░рддреА рд╣реИ, рдСрдкрд░реЗрд╢рди рдХреЗ рдкреАрдЫреЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

рдореИрдВрдиреЗ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХреА, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдПрдХ рд╕рд╣рдпреЛрдЧреА рдиреЗ рдореБрдЭреЗ рдЗрд╕рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдереА, рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдПрдкреАрдЖрдИ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдерд╛ред рдФрд░ рдореИрдВ рдЗрд╕ рдмрдЧ рд╕реЗ рдЯрдХрд░рд╛рдпрд╛, рдФрд░ рдлрд┐рд░ рдореИрдВ jQuery рдкрд░ рд▓реМрдЯ рдЖрдпрд╛, (рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВ jQuery рдХреЛ рдЗрддрдирд╛ рдЧрд░реНрдо рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛)ред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреБрд░рд╛рдиреА, тАЛтАЛрдЕрдирд╕реБрд▓рдЭреА рдмрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рднрд╛рдЧрдиреЗ рдХрд╛ рдХреЛрдИ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХрд┐рдП рдЧрдП рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдирд╛ рдХреЛрдИ рдорд╛рдореВрд▓реА рдХрд╛рдо рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдПрдХ рджрд┐рди jQuery рдХреЛ рдиреАрдЪреЗ рдЖрдиреЗ рджреЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдпрд╣рд╛рдВ рд╡рд╛рдкрд╕ рдЖрдПрдВред

@HakamFostok рдореИрдВ рдПрдкреАрдЖрдИ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЬреАрдердм/рд▓рд╛рдиреЗ рдХрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдЖрдк jQuery рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
https://github.com/github/fetch

@usopan рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЗрд╕реЗ рджреЗрдЦ рд▓реВрдВрдЧрд╛

@HakamFostok
рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ QS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЖрдкрдХреЛ qs рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдЗрд╕реЗ рд╕реАрдзреЗ qs.stringify рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

let qs = require('qs');
let result = await axios.post(url,
    qs.stringify({
        refresh_token: refresh_token,
        grant_type: 'refresh_token'
    }),
    {
        headers: {
            "Content-Type": "application/json"
        },
        auth: {
            username: 'username',
            password: 'secret'
        }
    });

рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрдк axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ ES6 рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ;)

рд▓реЗрдХрд┐рди рдЖрдк рдмрд┐рд▓рдХреБрд▓ рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рдмрдЧ рдХреЛ рд╕рджрд┐рдпреЛрдВ рдкрд╣рд▓реЗ рд╕реБрд▓рдЭрд╛ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЗрддрдирд╛ рд╕рдордп рд▓рдЧ рд░рд╣рд╛ рд╣реИред

@HakamFostok @ Silve2611 рдореИрдВ qs рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛рд░реНрдпреЛрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ: https://github.com/Halceyon/aspnet-auth/blob/master/src/AspnetAuth.js

рд╣рд╛рдВ, 'рдХреНрдпреВрдПрд╕' рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ 'рдХреНрдпреВрдПрд╕' рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред рд╡реИрд╕реЗ рднреА рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдФрд░ AJAX рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ https://github.com/fdaciuk/ajax рдпрд╣ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ рдореИрдВ рд╕рднреА рдХреЛ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдФрд░ рд╡рд╣рд╛рдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред

qs рдХреЛ рдорд╣реАрдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ 60 рдорд┐рд▓рд┐рдпрди рдмрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ 4.8Kb gzipped рд╣реИред
рдПрдХреНрд╕рдкреНрд░реЗрд╕, рдмреЙрдбреА-рдкрд╛рд░реНрд╕рд░, рдЕрдиреБрд░реЛрдз, рд╕реБрдкрд░рдПрдЬреЗрдВрдЯ рдФрд░ рдХрдИ рдЕрдиреНрдп рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ, рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдбрд░ рдХреЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

@HakamFostok рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХрд╛ рдиреЛрдб рд╕рдВрд╕реНрдХрд░рдг рдЕрджреНрдпрддрд┐рдд рд╣реИ рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдмрд╕ рдХрд┐рд╕реА рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рдХрдИ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд┐рд░реНрдл рдЖрдкрдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдПрдХреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИ рдФрд░ рди рд╣реА рдореИрдВ рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ vue.js рдХреЗ рд╕рд╛рде ASP.NET MVC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

"рдХреНрд╡реЗрд░реАрд╕реНрдЯреНрд░рд┐рдВрдЧ" рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдпрд╣ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИред

@axios рдЗрд╕ рдмрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ рдЬреЛ рдмрдиреА рд░рд╣рддреА рд╣реИ?

@HakamFostok рдореИрдВ рднреА vue рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ axios рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред qs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк async рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ axios рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдлрд╛рдпрджреЗ рд╣реИрдВред

рдореБрджреНрджрд╛ рдЕрднреА рднреА рдЦреБрд╢ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ qs рдХрд╛ рдореИрдиреНрдпреБрдЕрд▓ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛

axios.post(
      "connect/token",
      qs.stringify({
        username: this.state.username,
        password: this.state.password,
        grant_type: "password",
        scope: "offline_access"
      })
    );

рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдЧ рднреА рд╣реИ? рдореИрдВ рдЕрдХреНрд╖реАрдп рдХреЗ рд╕рд╛рде рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдпреВрдЖрд░рдПрд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЬреЛ рдЯрд┐рдкреНрдкрдгреА рдпрд╣рд╛рдВ рдкрд╣рд▓реЗ рдкреЛрд╕реНрдЯ рдХреА рдереА рд╡рд╣ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдмреЗрд╢рдХ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ! рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХрджрдо рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ axios рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЪрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╣рд╛рдВ, рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрджрдо рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
рдЕрдЧрд░ рдореИрдВ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ

headers: {
     'Content-type': 'application/x-www-form-urlencoded'
}

рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрдирд╛ рд╣реИ

axios.post(
      "connect/token",
      qs.stringify({
        username: this.state.username,
        password: this.state.password,
        grant_type: "password",
        scope: "offline_access"
      })
    );

рдореЗрд░реЗ рдкрд╛рд╕ Content-Type рдХреЛ application/vnd.api+json рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА, #340 рдХреЗ рд╕рдорд╛рди, рдЬреЛ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдмрд┐рдирд╛ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдореЗрд░рд╛ рдХрд╛рдордХрд╛рдЬ Content-Type рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд░рдирд╛ рдерд╛, рдЬреЛ рдереЛрдбрд╝рд╛ рд╣реИрдХреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ application/json;charset=utf-8 рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдЕрдХреНрд╖реАрдп рддрд░реАрдХреЗ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рдЗрд╕реЗ рдПрдХ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рд╡рд╕реНрддреБ рдбреЗрдЯрд╛ред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Content-Type рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рдХреНрд╖рдорддрд╛ рд╣реЛрдЧреА, рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП "рдЕрдиреБрдорд╛рди" рд╣реЛред

рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП "рдЕрдиреБрдорд╛рди" рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рд╣рдо рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд▓рд╣рд╛рд▓ рд╕рдм рдХреБрдЫ рдареАрдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рдиреНрд╕ рд╕рд╣реА рдирд╣реАрдВ рд╣реИрдВред Axios рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдРрд╕реА рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдХрдо рд╕реЗ рдХрдо рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

+1 рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдореЗрдВ рдмрд╕ 2 рдШрдВрдЯреЗ рдмрд┐рддрд╛рдПред рдХрдо рд╕реЗ рдХрдо рд░реАрдбрдореА рдореЗрдВ рдмреЗрд╣рддрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг/рдиреЛрдЯ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рд╣реЛрдЧреАред рдЕрдЧрд░ qs рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рддреЛ рдЕрдкрдбреЗрдЯ рд╣реЛрдЧрд╛ред

рдЕрджреНрдпрддрди: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, qs рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред рдпрд╣ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдерд╛ред рдореБрдЭреЗ рдЕрдкрдиреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдлреЙрд░реНрдо рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рджреЛрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

var data = qs.stringify({
    id: 'MY_ID',
    action: 'MY_DATA'
});
var params = {
  params: {
    token: 'MY_TOKEN'
  }
};
axios.post('MY_URL', data, params)
    .then(function (response) {
      console.log(response);
    })
    .catch(function (error) {
      console.log(error);
    });

рдореБрдЭреЗ рд▓реЙрдЧрд┐рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдФрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде рдШрдВрдЯреЛрдВ рддрдХ рд╕рдВрдШрд░реНрд╖ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рдорд╛рдзрд╛рди рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдмрдирд╛рдирд╛ рдерд╛ред

рддреНрд░реБрдЯрд┐ рдереА: unsupported_grant_type

рдЗрд╕ рдХрд╛рдоред

import axios from 'axios';
import qs from 'qs' ;

const endPoint = `${endPointApi}/ControllerX`;  

const data = qs.stringify({ 
    grant_type: 'password',            
    user: userName, 
    password: userPass
});

const headers = {
    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
};

axios.post(endPoint, data, headers)
.then(function (response) {
    debugger;
    console.log(response);
})
.catch(function (error) {
    debugger;
    console.log(error);
});

рдпрд╣ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

axios.post({
    url: endPoint, 
    data: data, 
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
    }
})...

@ harvic3 рдЖрдк рдореЗрд░рд╛ рд╡рд░реНрдХрд┐рдВрдЧ рдХреЛрдб рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрдкрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

https://github.com/Awesome-CMS-Core/Awesome-CMS-Core/blob/master/src/AwesomeCMSCore/AwesomeCMSCore/React/js/App/Modules/Account/LoginForm.jsx#L40 -L79

2 рд╕рд╛рд▓ рдмрд╛рдж рднреА рдЗрд╕ рдмрдЧ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ

+1

+1

+1 рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реИ

+1

+1
рдкрд┐рдВрдЧ @mzabriskie @nickuraltsev

рдиреЛрдбрдЬ рдкрдХреНрд╖ рдкрд░ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ, follow-redirects , рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЛ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИ:

screenshot from 2018-05-15 17-17-46
https://github.com/olalonde/follow-redirects/blob/1b6340f83ad5596a0a38c16a7113692bd90301f2/index.js#L188 -L192

+1 рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ

+1

qs рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрдВрдд рдореЗрдВ рдареАрдХ рдХрд░реЗрдВ (рд▓реЗрдХрд┐рди рд╣рд╛рдБ, qs рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)

рд╣реЗрдЬреЛ

  1. рдорд╛рдЬ 2018 23.31 рд╕реНрдХреНрд░реЗрд╡ "рд▓рд┐рдпреЛрдирд┐рдж рдПрд░реНрд╢реЛрд╡" рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com :

qs . рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрдВрдд рдореЗрдВ рдареАрдХ рдХрд░реЗрдВ

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/axios/axios/issues/362#issuecomment-390337824 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/AJZ-B0lPoCseiT4WNhJFlHVUTBHbmo9Yks5tzz3FgaJpZM4JAIFw
.

рд▓рдЧрддрд╛ рд╣реИ рдпреЗ рдорд╕рд▓рд╛ рд╕реБрд▓рдЭрдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИ

рдпрд╣ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реЛрдиреЗ рд▓рдЧрд╛ рд╣реИ!

рдПрдХ "f**k you" рднреА рдирд╣реАрдВ, рд╣рдо рдЗрд╕реЗ рдХрднреА рдареАрдХ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ! :/

+1

+1

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдирд╛рдпрдХ рдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг "рдПрдХреНрд╕рд┐рдпреЛрд╕" рдмрдирд╛рдпрд╛
рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗ

+1

+1

+1

+1

рдореИрдВ
рдЬреИрд╕рд╛ рдХрд┐ @camposjorge рдиреЗ рдХрд╣рд╛ рдХрд┐ рд╣рдо https://github.com/axios/axios/pull/1544 рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕ (рдЬрд▓реНрдж рд╣реА?) рдзрдиреНрдпрд╡рд╛рдж рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ

рдХреБрдЫ рддрдп?

+1

рдЙрд╕реЗ рд╣рд▓ рдХрд░ рд▓рд┐рдпрд╛! рдпрд╣ рдПрдХ рдЕрдХреНрд╖реАрдп рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдХреНрд░реЙрд╕ рдореВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ

рд╕реЗрдЯ {рд╣реЗрдбрд░: {'рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░': 'рдПрдкреНрд▓рд┐рдХреЗрд╢рди/x-www-form-urlencoded; рд╡рд░реНрдгрд╕реЗрдЯ=UTF-8'}}
рддрдерд╛
рдПрдХреНрд╕рд┐рд╕ рд╡рд┐рдХрд▓реНрдкреЛрдВ рд╕реЗ рдмрд╕ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░рдХреНрд╡реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░рдХреНрд╡реЗрдЯ: [рдлрд╝рдВрдХреНрд╢рди (рдбреЗрдЯрд╛) {рд░рд┐рдЯрд░реНрди рдкреНрд░рд╛рд░реВрдк (рдбреЗрдЯрд╛)}],

рдкреНрд░рд╛рд░реВрдк рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ {a:"a",b:"b"} рд╕реЗ "a=a&b=b" рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

+1, рдФрд░ рдЙрдкрд░реЛрдХреНрдд рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдорд╛рдзрд╛рди рдиреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛

+1

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рднреА рд╢рд╛рдорд┐рд▓ рд╣реВрдВ - рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рд╕рдордп рдХреЗ рдмрд╛рдж рдЗрд╕рдХрд╛ рдХреЛрдИ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ qs.stringify рдХреЗ рд╕рд╛рде рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ред

рдЖрдкрдХреЛ рдмрд╕ рдбреЗрдЯрд╛ рдХреЛ axios.post рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ qs.stringify рдХрд░рдирд╛ рд╣реЛрдЧрд╛

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реАрдПрд╕рдЖрд░рдПрдл рдЯреЛрдХрди рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реИ
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓

1- рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк.рдЬреЗрдПрд╕ рдореЗрдВ рдмрджрд▓реЗрдВ "

window.axios.defaults.headers.common['X-Requested-with'] = 'XMLHttpRequest';

рдЯреЛрдХрди рджреЗрдВ = document.head.querySelector('meta[name="csrf-token"]');

рдЕрдЧрд░ (рдЯреЛрдХрди) {
window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} рдЕрдиреНрдп {
рдХрдВрд╕реЛрд▓.рдПрд░рд░ ('рд╕реАрдПрд╕рдЖрд░рдПрдл рдЯреЛрдХрди рдирд╣реАрдВ рдорд┐рд▓рд╛: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}
"
рдЗрд╕ рдкрдВрдХреНрддрд┐ рд╕реЗ "
window.axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
"
2- npm рджреНрд╡рд╛рд░рд╛ qs рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдпрд╣рд╛рдБ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

3- рдиреАрдЪреЗ рджрд┐рдП рдЧрдП qs рдХреА рддрд░рд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
const qs = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('qs');
4- рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
axios.post ('рдЖрдкрдХрд╛ рд▓рд┐рдВрдХ рдпрд╣рд╛рдБ рд╣реИ', qs.stringify ({
'рдП1': 'рдмреА1',
'рдП2': 'рдмреА2'
}))
рддрдм (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ => {

                     alert('ok');

                })
                .catch(error => alert(error));

рдЗрд╕рдХреЗ рд╕рд╛рде рдореИрдВ axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рдХреЛ axios рдкрд░ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

```
рдХреЙрдиреНрд╕реНрдЯ {рдкреВрд░рд╛ рдирд╛рдо, рдИрдореЗрд▓, рдкрд╛рд╕рд╡рд░реНрдб, рдлреЛрди} = this.state;
рдЕрдХреНрд╖ (рдпреВрдЖрд░рдПрд▓, {
рд╡рд┐рдзрд┐: "рдкреЛрд╕реНрдЯ",
рд╢реАрд░реНрд╖рд▓реЗрдЦ: {
рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ: "рдПрдкреНрд▓рд┐рдХреЗрд╢рди/рдЬреЗрд╕рди",
"рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░": "рдПрдкреНрд▓рд┐рдХреЗрд╢рди/x-www-form-urlencoded"
},
рдбреЗрдЯрд╛: рдпрд╣ред рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ ({
рдирд╛рдо: рдкреВрд░рд╛ рдирд╛рдо,
рдИрдореЗрд▓: рдИрдореЗрд▓,
рдкрд╛рд╕рд╡рд░реНрдб: рдкрд╛рд╕рд╡рд░реНрдб,
рдлрд╝реЛрди: рдлрд╝реЛрди
})
})
рддрдм (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ => {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛);
})
рдХреИрдЪ (рддреНрд░реБрдЯрд┐ => {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рддреНрд░реБрдЯрд┐ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛);
});

рдХреНрд░рдорд╛рдиреБрд╕рд╛рд░ = obj => {
рдЪрд▓реЛ str = [];
рдХреЗ рд▓рд┐рдП (рдЪрд▓реЛ p obj рдореЗрдВ)
рдЕрдЧрд░ (obj.hasOwnProperty(p)) {
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
}
рд╡рд╛рдкрд╕реА str.join("&");
};

рдЯрдХреНрдХрд░ред рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд░реВрдк рд╕реЗ, рд╡рд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рдж рднреА, рдпрд╣ рдХрд╖реНрдЯрдкреНрд░рдж рдмрдЧ рдЕрднреА рднреА рдареАрдХ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред

рдЯрдХреНрдХрд░ред рдпрд╣рд╛рдБ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЖрд╡рд╢реНрдпрдХ AF рдХреЛ рдареАрдХ рдХрд░реЗрдВред

@mzabriskie

рдХреНрдпрд╛ рдЗрд╕реЗ рддрдп рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдЙрдкрдпреБрдХреНрдд рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рд╡реЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рд╣реЛ рд░рд╣реЗ рд╣реИрдВред
рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╢реАрд░реНрд╖рд▓реЗрдЦ
рдпрд╣рд╛рдВ рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░рдирд╛

form-urlencoded рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореБрдЭреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ (рдЕрд╕реНрдерд╛рдпреА рдХреЗ рд▓рд┐рдП)ред

return preset.post("/app/BookingProc.do",formurlencoded(dat),{
        headers:{
            Cookie:session
        }
    }).then(response=>{
        return response
    })

@mzabriskie

рдХреНрдпрд╛ рдЗрд╕реЗ рддрдп рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдЙрдкрдпреБрдХреНрдд рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рд╡реЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рд╣реЛ рд░рд╣реЗ рд╣реИрдВред
рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╢реАрд░реНрд╖рд▓реЗрдЦ
рдпрд╣рд╛рдВ рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░рдирд╛

рдирд╣реАрдВ, рдЗрд╕реЗ рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛!!!
рд╣рд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рд╕рдорд╛рдзрд╛рди рдХрд╣рд╛рдВ рдЦреЛрдЬрд╛ рдЬрд╛рдПред рдЗрд╕реЗ рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдПрдХ рдорд╛рдирдХ рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рджрд┐рдЦрд╛рддреЗ рд╣реБрдП рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╣рд╛рдВ рд╣реИред
рд╕рд╛рде рд╣реА рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рднреА рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рдЕрднреА рднреА рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ!

рдЯрдХреНрдХрд░ред рдпрд╣ рдмрдЧ рдЕрднреА рднреА рдЕрдкрдиреА рдЬрдЧрд╣ рдкрд░ рд╣реИ рдФрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ!

рдЯрдХреНрдХрд░

рдпрд╣ рдмрдЧ рдЕрднреА рднреА рдЬреАрд╡рд┐рдд рд╣реИ!

рдореИрдВ рднреА рдпрд╣рд╛рдБ рдмрдЧ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

рдпрд╣рд╛рдБ рдЕрднреА рднреА рдШреГрдгрд┐рдд

const axios = require('axios');
const qs = require('querystring');

axios.post(`${this.api}siteverify`, qs.stringify({
  secret: this.secret,
  response: recaptchaToken,
  remoteip: userIP,
}), {
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
  },
});

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЙрд╕ рдРрдк рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ Google рдХреЗ рд░рд┐рдХреИрдкреНрдЪрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

рдЕрднреА рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ ...

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ:
axios.defaults.headers.common['Accept'] = 'application/json'; // working axios.defaults.headers.common['Content-Type'] = 'application/json;charset=UTF-8'; // NOT working

рдФрд░ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИ:
axios.get(url, { headers: { 'Content-Type': 'application/json;charset=UTF-8' } })

@aaroninn рдпрд╣ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдХреГрдкрдпрд╛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ axios рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ (рдЬреЛ vuex рдХреЗ рдореВрд▓ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдореБрдЭреЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ)

рдпрд╣ рдзрд╛рдЧрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА +1 рд╕реЗ рднрд░рд╛ рд╣реИ, рдпрд╣рд╛рдВ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

https://github.com/axios/axios/issues/362#issuecomment -229817415

@mzabriskie рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрд╕ рдХрдорд┐рдЯ рдХреЗ рд▓реЗрдЦрдХ рд╣реИрдВ рдЬрд┐рд╕рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ (рдпрджрд┐ рдЖрдк рдпрд╣ рднреА рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛, рддреЛ рдЖрдк рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╣реА?)

рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж

рдпрд╣ 2018 рд╣реИ! рдХреМрди рд╕рд╛ рдЙрддреНрддрд░, рдКрдкрд░, рдореБрдЭреЗ рдбрд╛рдЙрдирд╡реЛрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рдмрддрд╛рдПрдВ рдХрд┐ рд╣рдо рд╕рднреА рдПрдХреНрд╕рд┐рдпреЛрд╕ рд╕реЗ рдкреНрдпрд╛рд░ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ?

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдпрд╛ рдпрд╣ рд╕реНрд╡реИрдЪреНрдЫрд┐рдХ рд╣реИ, рдореИрдВ рдкреВрдЫ рд░рд╣рд╛ рд╣реВрдБ, рдпрд╣ 2 рд╕рд╛рд▓ рд╕реЗ рдЦреБрд▓рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдиреЗ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдХреНрдпрд╛ рдпрд╣ рд╕реНрд╡реИрдЪреНрдЫрд┐рдХ рд╣реИ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ?

@jeremycare рдореИрдВ рд╕рд┐рд░реНрдл рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рддрд╛ рд╣реВрдВ ... рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╖реНрдЯрдкреНрд░рдж "рдмрдЧ" рд╣реИ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдФрд░ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред

рджреЛрд╕реНрддреЛрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЯрд┐рдХрдЯ рдЕрднреА рднреА рдХреНрдпреЛрдВ рдЦреБрд▓рд╛ рд╣реИред
рдЬреЛ рд▓реЛрдЧ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЙрдирдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдм "qs" рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд▓реЛрдЧ рдЗрд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рд╡реЗ "рдХреНрд╡реЗрд░реАрд╕реНрдЯреНрд░рд┐рдВрдЧ" рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ, рдпрд╣ рдЯрд┐рдХрдЯ рд╕рдм рдХреБрдЫ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рд▓рдВрдмрд╛ рд╣реИ рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдЯрд┐рдХрдЯ рдореЗрдВ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрдХреБрдЫ рдирд╣реАрдВ рд╕рдордЭрддрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреЛрдИ рдлреЙрд░реНрдо рдбреЗрдЯрд╛ рдХрд╛рдо рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЛ рдЖрдЬрдорд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдЪреЗрдХрдЖрдЙрдЯ рдХрд░реЗрдВ:

рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рд╡рд░реНрдгрд┐рдд: https://github.com/axios/axios/issues/1894

рдЬрдм Axios рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ Content-Type рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рддреБрд░рдВрдд рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП рджреЗрд╢реА fetch рдХреЗ рд╕реНрд╡реИрдк рдХреЛ рджреЗрдЦрдирд╛ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИред рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рдмреАрдЪ рдЗрдВрдЯрд░рдСрдк рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╡рд┐рдХреНрд░рдп рдмрд┐рдВрджреБ рдерд╛ред

рдореИрдВ transformRequest рд╡рд┐рдзрд┐ рдореЗрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╣реЗрдбрд░ рд╕реЗрдЯ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрд░реЛрдз рдкрд░ рдХрднреА рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред рдореИрдВ рдХреНрдпреВрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХреЗрд╡рд▓ рдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ рдПрдХ рдмреЙрдбреА рднреЗрдЬ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВ рдЬреЛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЙрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рдореИрдВ axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ Content-Type рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рд╣реИред рдореИрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреЗрд▓реЛрдб (рдХреЛрдИ рдлреЙрд░реНрдордбреЗрдЯрд╛ рдирд╣реАрдВ) рднреЗрдЬ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП qs / querystring рдореЙрдбреНрдпреВрд▓ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИрдВред

рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЕрднреА рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдореЗрд░реЗ рд▓рд┐рдП axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реЗ рдмрд┐рдВрджреБ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред

EDIT2: рдореИрдВрдиреЗ рдЕрдкрдиреА рдЦреБрдж рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА - рдХрд╛рдЙрд▓ - рдХреЛ рдХрдИ рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рд╣реИ (рдиреЛрдб/рдмреНрд░рд╛рдЙрдЬрд╝рд░/рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдирд╛)ред рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ axios рдФрд░ рдЗрд╕рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рднреА рдореВрд▓рднреВрдд рдмрд╛рддреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓рд╛ред рдФрд░ рдЕрдЧрд░ рдореИрдВ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреА рдХреБрдВрдЬреА рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ "рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░" рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдХреГрдкрдпрд╛ рд╕рд╣рд╛рдпрддрд╛ рдХреАрдЬрд┐рдП!

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓рд╛рдиреЗ рдФрд░ рдиреЛрдб рдореЗрдВ рдЕрдХреНрд╖рддрдВрддреБ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХреЗ рднреАрддрд░ рдПрдХ рдФрд░ рдЧрдиреНрджрд╛ рд╣рд╛рдЗрдмреНрд░рд┐рдб рдРрдк рдмрдирд╛рдирд╛ рдкрдбрд╝рд╛ рд╣реИред рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдРрд╕рд╛ рд╣реА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдЬрд▓реНрдж рд╣реА рджреЗрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдмрдВрджрд░-рдкреИрдЪ рдХреЛ рд╣рдЯрд╛ рд╕рдХреВрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдХреНрд╡реЗрд░реАрд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ .. рдореЗрд░реА рдмреЙрдбреА рд╕рд╛рдордЧреНрд░реА рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдХрдЪреНрдЪреЗ рдЯреЗрдХреНрд╕реНрдЯ рд╣реИ, рдлрд┐рд░ рднреА рдореИрдВ рдЗрд╕реЗ Content-Type рдХреЗ рд╕рд╛рде axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд╣реАрдВ рднреЗрдЬ рд╕рдХрддрд╛ред

рдореИрдВрдиреЗ рдкреЛрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдкреЛрд╕реНрдЯ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЬреЗрд╕рди рд╣реИ

рдореИрдВ рдЕрднреА рдЗрд╕ рдмрдЧ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ... рддреЛ рдХреНрдпрд╛ рд╕рд╛рд▓реЛрдВ рдмрд╛рдж рдЗрд╕рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ? рдмрд╣реБрдд рдЦреВрдм...

рдореИрдВрдиреЗ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдпрд╛ рдЬреЛ рджреЛ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджреЗрдЧрд╛... рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЗрд╕реЗ рд╡рд┐рд▓рдп рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛?!

рдореИрдВрдиреЗ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдпрд╛ рдЬреЛ рджреЛ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджреЗрдЧрд╛... рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЗрд╕реЗ рд╡рд┐рд▓рдп рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛?!

рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рд╕рд┐рддрдВрдмрд░ рдХреЗ рдмрд╛рдж рд╕реЗ рдХрд┐рд╕реА рдиреЗ рдХреБрдЫ рднреА рдзрдХреНрдХрд╛ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ, рд╢рд╛рдпрдж рд╡реЗ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рд╕рд╛рде рд╣реА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рдЖрдкрдХреЗ рдкреАрдЖрд░ рдХреА рддреБрд▓рдирд╛: https://github.com/axios/axios/pull/1544/files рд╕реЗ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдЖрдк рдПрдХ рдкрд░реАрдХреНрд╖рд╛ рдЪреВрдХ рдЧрдП

@mzabriskie рдХреНрдпрд╛ рдЖрдк рдЗрди рдкреАрдЖрд░ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ? рдЪреВрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреБрдЫ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рд╕реЗрдЯ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрд░рдУрдЖрд░ рдкреИрд░рд╛рдореНрд╕: https://guides.rubyonrails.org/api_app.html#using-actiondispatch-request) рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред https://github.com/axios/axios/issues/362#issuecomment -229817415 рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдЬрд╛рдиреЗ рдХрд╛ рдЙрдЪрд┐рдд рддрд░реАрдХрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рднреНрд░реВрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬреИрд╕реЗ рд╕рднреА рд╣рддрд╛рд╢ рд╣реИрдХ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ред

рдореИрдВ got рдкреЗрдЬрдХреЗрдЬ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ axios рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд▓рдЧрддрд╛ рд╣реИред

рддреЛ Axios рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ 'Content-Type': 'application/x-www-form-urlencoded' рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реИ рдпрд╛ @ChBernat рд╕рдорд╛рдзрд╛рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ рдПрдЯреАрдПрдо?

рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ рдПрдЯреАрдПрдо?

рдПрдХ рд╕рд╛рд▓ рддрдХ рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ рдФрд░ рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ... рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рджреВрд╕рд░реЛрдВ рдХреА рддрд░рд╣ рдФрд░ рдЦреБрдж рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реБрдП, рдЕрдХреНрд╖рддрдВрддреБ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝реЗрдВред рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ...

рд╡рд╛рд╣... рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рд╕рдордп рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╣реВрдВред рдореВрд▓ рд░реВрдк рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП рдореБрджреНрджреЗ рдХреЗ рд▓рдЧрднрдЧ 3 рд╕рд╛рд▓ рдФрд░ рдЕрдм рднреА рд╣рдо рдЗрд╕ рдмрд╛рдд рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдпред рдореБрдЭреЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдкрд╕рдВрдж рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдмреАрдорд╛рд░ рднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдмрд░рдХрд░рд╛рд░ рдирд╣реАрдВ рд░рдЦ рд░рд╣рд╛ рд╣реВрдВ, рд░рдЦрд░рдЦрд╛рд╡ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди ... рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реЛрдЧреЛрдВ рдХреЗ рдЯрди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдЖрдк рдЗрд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдорд░ рдЪреБрдХреА рд╣реИ/рдорд░ рд░рд╣реА рд╣реИред рдзрдиреНрдпрд╡рд╛рджред

@justintime4tea рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдирдИ рд╕рд┐рдлрд╛рд░рд┐рд╢ рд╣реИ?

got

@kslr рдорд┐рд▓ рдЧрдпрд╛ рдпрд╛ рдЕрдиреБрд░реЛрдз рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╛рдХреА рд╕рднреА рдиреЗ рднреА рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдореИрдВ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХреЗ рд╕рд╛рде рд░рд╣рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЕрдореВрд░реНрдд рдкрд░рдд рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ рддрд╛рдХрд┐ рдореИрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд HTTP рдЕрдиреБрд░реЛрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╕реНрд╡реИрдк рдХрд░ рд╕рдХреВрдВ рдФрд░ рдлрд┐рд░ рдпрджрд┐ рдореИрдВ рдПрдХ рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ "рдирд┐рд░реНрдорд┐рдд" рд╣реИ -in" HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдмрд╕ рдЗрд╕реЗ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдВред

рдореИрдВрдиреЗ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред
рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ), рдХреЛрдИ рд╕реБрдЭрд╛рд╡, рдЕрдЧрд░ рдпрд╣ рд╕рдорд╛рдзрд╛рди рднрдпрд╛рдирдХ рд╣реИ, рддреЛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

const foo= yield qs.stringify({ 'grant_type' : 'yourGrantType', 'param' : param, 'param' : param }) const bar= yield axios.post('/baz', foo)

рдореИрдВрдиреЗ рд╣реЗрдбрд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рд╣реИред

axios({
  url,
  method: 'POST',
  headers:{
    'Content-Type': 'application/json'
  },
  data: null, // important
})

рдмреИрдХрдПрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ RoR рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдореБрдЭреЗ рджреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВред

рдореЗрд░рд╛ рд╕рдВрджрд░реНрдн:

рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╣рд┐рд╖реНрдХреГрдд vue-resource рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдерд╛ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд┐рдирд╛ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЕрдм, рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдмрд╣рд┐рд╖реНрдХреГрдд рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдмрджрд▓ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ vue-resource рдХреЛ axios рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛;)...


рд▓реЗрдХрд┐рди, рд╣рдореЗрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ рдФрд░ рдиреАрдЪреЗ рдореИрдВ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рдХрд░рддрд╛ рд╣реВрдВ рдЙрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ред рд╢рд╛рдпрдж рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЛ! рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рдореИрдВрдиреЗ рдЖрдкрдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдирд╣реАрдВ рдХреА рд╣реИ

рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ , рд╕рдорд╕реНрдпрд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛:

axios.interceptors.request.use(config => {
  config.paramsSerializer = params => qs.stringify(params);
  return config;
});

рдЕрдм, рдкреИрд░рд╛рдореНрд╕ рдЬреИрд╕реЗ:

q: {
  search: "Something",
  sort: "asc",
}

рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
http://xxxx/?q%5Bsearch%5D=something&q%5Bsort%5D=asc

рдпрд╣ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

q[search]: something
q[sort]: asc

рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ , RoR JSON рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрдЬрд╛рдп HTML рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓реМрдЯрд╛ рд░рд╣реА рд╣реИ:

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдмреИрдХрдПрдВрдб рдХреЛ AJAX рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, vue-resource рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкреЗрдХреНрд╖рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ X-Requested-With рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░ рдЪреБрдХрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЕрдХреНрд╖ рдирд╣реАрдВред рддреЛ, рдореБрдЭреЗ рдЗрд╕ рдХреБрдВрдЬреА рдХреЛ рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖рд▓реЗрдЦ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдореЗрд░рд╛ Axios рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдЕрдВрдд рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдерд╛:

axios.interceptors.request.use(config => {
  config.paramsSerializer = params => qs.stringify(params);
  return config;
});
axios.defaults.headers.common['Accept'] = 'application/json';
axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

===

рдпрджрд┐ рдЖрдк рдмреИрдХрдПрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рднреА рд╕рдорд╛рдзрд╛рди рдиреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ, рд╢рд╛рдпрдж рдореИрдВ рдЖрдкрдХреА рдорджрдж рдХрд░реВрдБ =)ред

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ .. https://gist.github.com/akexorcist/ea93ee47d39cf94e77802bc39c46589b#gistcomment -2878451

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз 400 рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
рдЖрдпрд╛рдд * 'рдХреНрд╡реЗрд░реАрд╕реНрдЯреНрд░рд┐рдВрдЧ' рд╕реЗ qs рдХреЗ рд░реВрдк рдореЗрдВ;
axios.post(url,qs.stringify({
'рдлрд░реНрд╕реНрдЯ_рдирд╛рдо': 'рдбреАрдк',
'last_name': 'рдкрд▓реЛрддреНрд░рд╛',
}),{
рд╢реАрд░реНрд╖рд▓реЗрдЦ: {
'рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░': 'рдПрдкреНрд▓рд┐рдХреЗрд╢рди/x-www-form-urlencoded; рд╡рд░реНрдгрд╕реЗрдЯ = UTF-8'
}
}).рдлрд┐рд░ ((рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) => {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рдХрд╛рдо рдХрд┐рдпрд╛')
}).рдХреИрдЪ ((рддреНрд░реБрдЯрд┐) => {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рддреНрд░реБрдЯрд┐')
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рддреНрд░реБрдЯрд┐)
})

рддреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХреИрд╕реЗ рдХрд░реЗрдВ?

рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди :(

qs . рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛

{ data: qs.stringify(bodyObject) }

рдпрд╣ рджреЗрдЦрдХрд░ рджреБрдЦ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд▓реЛрдЧ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рднреНрд░рдорд┐рдд рд╣реИрдВред рдореИрдВрдиреЗ рдЙрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХрдИ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рд╕рдм рд▓реЛрдЧ, рдореБрдЭреЗ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВред рдЕрдЧрд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдбрд╝рд╛ рдзрдиреНрдпрд╡рд╛рдж рд╣реЛрдЧрд╛ред

рдЬрд╝рд░рд╛ рд╕реБрдирд┐рдП рд╕рднреА,

рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ рдЭрдВрдХрд╛рд░ рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдЕрдкрдиреЗ рдЬреАрд╡рди рдХрд╛ рд▓рдЧрднрдЧ рдкреВрд░рд╛ рдХрд╛рд░реНрдп рджрд┐рд╡рд╕ рдмрд░реНрдмрд╛рдж рдХрд░ рджрд┐рдпрд╛ред рдпрд╣ рдХреБрдЫ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИред

рдореЗрд░рд╛ рдЙрддреНрддрд░ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рд╕реЗ рдЙрдкрдЬрд╛ рд╣реИ рдХрд┐ рдПрдХ POST Axios рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рдерд╛:

  1. 400 рдЧрд▓рдд рдЕрдиреБрд░реЛрдз
  2. рдХрд╕реНрдЯрдо рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдкреЛрд╕реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ (рдЗрд╕ рдзрд╛рдЧреЗ рдХреА рддрд░рд╣)
  3. рдбреЗрдЯрд╛/рдкреЗрд▓реЛрдб рдХреЛ рдХреНрд░рдордмрджреНрдз/рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдореИрдВ рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз 400 рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬрдм рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдореЗрдВ рдХрд╕реНрдЯрдо рд╣реЗрдбрд░ рдореЗрдВ рдкрд╛рд╕ рд╣реЛ рд░рд╣рд╛ рдерд╛, рдФрд░ рдпрд╣рд╛рдВ рдХрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреИрд╕реЗ рдХрд┐ qs.stringify() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХрд░рдирд╛ рд╢реВрдиреНрдп рдпрд╛ {} рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реБрдЖред

1) рдиреЛрдЯ - .catch() рдмреНрд▓реЙрдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рд▓реЙрдЧ рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрдж рдорд┐рд▓реА рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрдХ рдРрд╕реА рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рд╛рдордиреЗ рд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдЬреЛ рдЗрддрдиреА рдЧреБрдкреНрдд рдирд╣реАрдВ рдереАред рдореИрдВ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдФрд░ рдЕрдВрддрддрдГ рдореЗрд░реЗ рдкрд╛рд╕ рдореМрдЬреВрдж рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред

2) .then() рдмреНрд▓реЙрдХ рдореЗрдВ response.data рд▓реМрдЯрд╛рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЖрдк рдЗрд╕ рддреНрд░реБрдЯрд┐ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдВрдЧреЗ:

Converting circular structure to JSON

рдЕрдм рдореЗрд░рд╛ рдореБрджреНрджрд╛ рдПрдкреАрдЖрдИ рдкреЛрд╕реНрдЯ рдмреЙрдбреА рдирд╣реАрдВ рдерд╛ рдЬреЛ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдореИрдВ рддреНрд░реБрдЯрд┐ рд▓реЙрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛, рддрдм рддрдХ рдореИрдВ рдЗрд╕реЗ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдиреЗрд╕реНрдЯрдЬреЗрдПрд╕ рдФрд░ рдПрдЪрдЯреАрдкреА рд╕реЗрд╡рд╛ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд░реИрдкрд░ рд╣реИ, рдФрд░ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдФрд░ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрд╕рд▓реА рддреНрд░реБрдЯрд┐ рдореЗрд░реЗ рдкрд╛рдЗрдк рдореЗрдВ рдХреИрдЪ рдПрд░рд░ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдмреБрд▓рдмреБрд▓рд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣реА рдереАред

рддреЛ рдпрд╣рд╛рдБ рд╢реБрджреНрдз Axios рдФрд░ NestJS рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

рдЕрдХреНрд╖:

const headers = { 'Content-Type': 'application/x-www-form-urlencoded' };
return axios.post('https://some-made-up-endpoint, dataString, { headers })
.then(resp => resp.data)
.catch(error => {
this.logger.log('ERROR: ${JSON.stringify(error.response.data)}');
});

рдиреЗрд╕реНрдЯрдЬреЗрдПрд╕:

const headers = { 'Content-Type': 'application/x-www-form-urlencoded' };
return this.http.post('https://some-made-up-endpoint, dataString, { headers }).pipe(
map(response => response.data), // This is important otherwise - circular JSON error
catchError((error: any) => {
this.logger.error('[[[[ ERROR TRYING TO FETCH TOKEN: ${error.message} ]]]]');
return of()
})
).toPromise();

рдЯреАрдПрд▓рдбреАрдЖрд░;

1) рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рд╕реЗ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .catch() рдмреНрд▓реЙрдХ рдЬреЛрдбрд╝реЗрдВ, рдЕрдиреНрдпрдерд╛ рдпрд╣ 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз рд╣реИ
2) рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХрд╛ рдбреЗрдЯрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдПрдкреАрдЖрдИ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреЗ рдореМрдЬреВрдж рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб 400 рдПрдХ 'рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз' рд╣реИ
3) рдпрджрд┐ рдЖрдк Axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╛ рдпрджрд┐ рдЖрдк NestJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдореИрдк рдСрдкрд░реЗрдЯрд░ рдореЗрдВ .then() рдмреНрд▓реЙрдХ рдореЗрдВ response.data рд▓реМрдЯрд╛рдПрдВ рдпрд╛ рдЖрдкрдХреЛ Converting circular JSON рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА

рд▓рдВрдмреА рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ рдФрд░ рд╕рднреА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!

рдЪрд┐рдпрд░реНрд╕

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз 400 рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
рдЖрдпрд╛рдд * 'рдХреНрд╡реЗрд░реАрд╕реНрдЯреНрд░рд┐рдВрдЧ' рд╕реЗ qs рдХреЗ рд░реВрдк рдореЗрдВ;
axios.post(url,qs.stringify({
'рдлрд░реНрд╕реНрдЯ_рдирд╛рдо': 'рдбреАрдк',
'last_name': 'рдкрд▓реЛрддреНрд░рд╛',
}),{
рд╢реАрд░реНрд╖рд▓реЗрдЦ: {
'рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░': 'рдПрдкреНрд▓рд┐рдХреЗрд╢рди/x-www-form-urlencoded; рд╡рд░реНрдгрд╕реЗрдЯ = UTF-8'
}
}).рдлрд┐рд░ ((рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) => {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рдХрд╛рдо рдХрд┐рдпрд╛')
}).рдХреИрдЪ ((рддреНрд░реБрдЯрд┐) => {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рддреНрд░реБрдЯрд┐')
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рддреНрд░реБрдЯрд┐)
})

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдоред рдХреНрд╡реЗрд░реА stringfy рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред
рддреБрдо рдореЗрд░реА рдЬрд╛рди рдмрдЪрд╛рдУ

рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп qs рдЬреИрд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

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

рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

shaosh picture shaosh  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

emaincourt picture emaincourt  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

StefH picture StefH  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ildella picture ildella  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

samayo picture samayo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ