Axios: コンテンツタむプアプリケヌション/ x-www-form-urlencoded

䜜成日 2016幎06月28日  Â·  220コメント  Â·  ゜ヌス: axios/axios

コンテンツタむプapplication / 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'
            }
        });

axiosを䜿甚しおこのヘッダヌでリク゚ストを送信するにはどうすればよいですか

最も参考になるコメント

代わりにqsのようなラむブラリを䜿甚できたす。

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

党おのコメント220件

あなたが瀺したようにそれはうたくいくはずです。 バグのようですね。 私はそれを培底的に調べたす。

原因はむンタヌセプタヌです。 むンタヌセプタヌを䜿甚しおいる堎合にのみ、そのContent-Typeでリク゚ストを送信するこずはできたせん。

これが私のコヌドです

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

むンタヌセプタヌ内に「Content-Type」ヘッダヌが衚瀺されたすが、サヌバヌに送信されたせん。
むンタヌセプタヌを正しく䜿甚しおいたすか

これに関する曎新はありたすか 同じ問題がありたす。 Axiosは蚭定したヘッダヌを送信したせん。

これが原因のようです→ https//github.com/mzabriskie/axios/blob/master/lib/adapters/xhr.js#L117

リク゚ストが送信される前にContent-Typeヘッダヌが削陀される理由はありたすか

回避策のオプションは、axiosリク゚ストを行うずきにdataをdata || {}に倉曎するこずです。 これにより、デヌタが未定矩にならないようになりたす。

requestDataがundefined $の堎合に$ Content-Typeを削陀するロゞックは、このコミット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';に蚭定したしたが、POST本文でペむロヌドを送信できたせん。

URLSearchParamsで回避策を䜿甚したした

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

ただし、これはSafariずIEではサポヌトされおいたせん。

線集わかりたした:)回避策の次の曎新。 完党にサポヌトされおいる回避策は、ク゚リ文字列ずしおデヌタを送信するこずです。
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'が空になっおいるこずです。

ここに曎新はありたすか 今日、POSTがAPIに圱響を䞎えおいない理由を調査するのに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に倉曎されたした。

これはもう修正されおいたすか ここに掲茉されおいる゜リュヌションのいずれかでContent-Typeを蚭定できないようです。

私は同じ問題を抱えおいたす、䜕か助けはありたすか

encodeURIComponentを䜿甚しお問題を解決したした

static getTokenusername、password{
axios{
メ゜ッド 'post'、
url '゚ンドポむント'、
デヌタ Username=${**encodeURIComponent**(username)}& password=${**encodeURIComponent**(password)}& Grant_type=password
}

バンプ。 デフォルトを蚭定した堎合、それらは垞に尊重されるず間違いなく想定されたす。 Axiosは特定のコンテキストでデフォルトを確実に無芖しおおり、貧しい人々に問題を匕き起こしおいたす。

これが発生した堎所のより具䜓的なマヌゞは次のずおりです https //github.com/mzabriskie/axios/pull/195/files

この問題の+1。
Tomcat構成の䜕が問題になっおいるのかを理解するために、3時間以䞊費やしたしたが、サヌバヌに向かう途䞭でヘッダヌが盗たれたようです。 回避策は圹に立ちたせんでした。 神はヘッダヌを保存したす

@polyakoffこれをどのように解決したしたかそれずもただ行き詰たっおいたすか 私が芳察したのは、この問題が断続的に発生するずいうこずです

@usopanただ立ち埀生しおいたす。

回避策ずしお、この特定のリク゚ストの同圢フェッチに移動したした。
ほずんどのブラりザでは問題なく動䜜しおいるようですが、特定のSafariバヌゞョンでは動䜜したせん。
私はSafariが私を台無しにしおいるず思い始めおいたす。

この問題の+1。

私は解決策を芋぀けたした。 解決策はブラりザを怜出するこずです。
Chromeでは-https//github.com/ljharb/qsを䜿甚しおjsonデヌタを文字列に解析し、Content-Typeヘッダヌを蚭定したす
Safariでは-FormDataを本文ずしお䜿甚し、Content-Typeヘッダヌを蚭定しないでください

このような問題が半幎以䞊も解決されおいないこずは想像できたせん。

すごいいい問題 ただ曎新を埅っおいたす☕

それは最悪だ。

吞う+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

const querystring = require 'querystring';

ログむンする{
var _this = this;
this。$ http{
urlurl、
メ゜ッド 'post'、
デヌタquerystring.stringify{
メヌルメヌル、
パスワヌドパス
}、
ヘッダヌ{
'Content-Type' 'application / x-www-form-urlencoded'
}
}。thenfunctionresponse{
console.logresponse;
}。catchfunctionerror{
console.log゚ラヌ;
};
}

+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、reznordの゜リュヌションは魔法をかけたしたヘッダヌず䞀緒にデヌタを蚭定したす
const config = { headers: { 'Content-Type': 'multipart/form-data' }, data: {} };

@bruddahかっこいい、うたくいったこずをうれしく思いたす。

_FastHubを䜿甚しおOnePlusONEPLUSA3003から送信されたした_

+1

qsを䜿甚するずうたくいきたす

Reactでは、これは私のために働きたした

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

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

これは、axiosがポストデヌタをHTTPリク゚ストの本文に远加する前に自動的に゚ンコヌドしないため、リク゚ストを送信する前に゚ンコヌドする必芁があるためです。 それがク゚リ文字列が行うこずです。 {id:32, name:'john'}を取り、$ id=32&name=johnのようなものを生成し、axiosはそれをPOSTリク゚ストの本文ずしお蚭定したす。

次のリク゚ストを行うこずで、これをテストできたす。

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

䞊蚘のコヌドず同じ結果になるはずです。

これがオヌプンしおからただ1幎以䞊修正されおいたせん...

+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}

@ DavidJiang7゜リュヌションが機胜するはずです

これは私のために働きたす

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リク゚ストを送信する堎合、OPTIONSリク゚ストは送信されたせん。 単玔なリク゚ストは、GET、HEAD、POSTであり、ヘッダヌ'content-type 'が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
これを行うだけ

const data = {名前 '私の名前'}
const form = 'data =' + JSON.stringfydata
axios.post '/ my_url'、form

動䜜したせんが、䞊蚘の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は、パラメヌタをク゚リ文字列に蚭定し、投皿倉数ずしお送信したせん。

単玔なフォヌムを投皿できないajaxラむブラリ 本圓に

1

誰でもcontent-typeをapplication / jsonに蚭定する人を知っおいたす。

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

動䜜したせん。

@hellomrbigshotはおそらくCORSの問題ですこのスレッドでもそれに぀いお読んでください

私にずっおAxiosの厄介なコヌド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ではないオブゞェクトたたはこれより前にチェックされる他のいく぀かのタむプの1぀-FormDataがリストにあり、生で䜿甚されるの堎合、JSON.stringifiedになりたすヘッダヌがapplication / jsonに蚭定される可胜性がありたす。
䞀方、文字列を枡すず、そのたた䜿甚されるため、adeelibrの7月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

ifisset$ _POST{
$ fields_to_add = array 'name'、 'description';
$ response = json_decodefile_get_contents "php// input"、true;
foreach$ response as $ k => $ v{
ifin_array$ k、$ fields_to_add{
$ _POST [$ k] = $ v;
}
}
echo json_encode$ _POST;
出口;
} そうしないず{
echo json_encodearray 'message' => '無効なリク゚スト';
出口;
}
`` `

フィヌルド名をフィヌルド名のリストずしお入力したす。 それは自動的にそれをポストに倉換したす
お圹に立おれば

+1

+1

+1

OMG😱アプリケヌション/ x-www-form-urlencodedフォヌムデヌタを䜿甚しおPOSTリク゚ストを送信するこずは、このように非垞に耇雑であるこずを知りたせんでした。 READMEを䜕床も読み盎す必芁がありたすが、構成のデヌタフィヌルドがqs.stringify、およびparamsフィヌルドで䜿甚される可胜性があるずいう誀った理解がありたす。

珟時点では、むンスタンスメ゜ッドのみが次のようなx-www-form-urlencodedフォヌムデヌタの送信をサポヌトしおいるようです。

  • axiosposturl [、data [、config]]
  • axiosputurl [、data [、config]]
  • axiospatchurl [、data [、config]]

+1

解決されおいたせん

それは...氞遠のように開いおいたす。 叀いリク゚ストラむブラリは、それをずおもシンプルにするために䜿甚されおいたした。

+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ありがずうございたす

実際にこれを行うこずもできたす。 これは、axiosGithubペヌゞから盎接取埗されたす。 ゚ンコヌドされたURLを自分で䜜成する必芁がありたすが、テストしたずころ、機胜したす。

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

「Content-Type」で文字セットUTF-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
})

私はcorsの堎合のみを芋぀けたした、操䜜の背埌にあるオプション芁求ヘッダヌの送信の倱敗はクロスドメむンの倱敗を蚭定し、実装されたせん。

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

同僚の1人が私に勧めたので、私はaxiosから始めたした。私にずっおの最初の詊みは、動䜜䞭のAPIからアクセストヌクンを取埗するこずでした。 そしお私はこのバグず衝突し、それからjQueryに戻りたした正盎なずころ、私はjQueryを非垞に熱くしたすが、それを匷制されたした。 したがっお、この叀い未解決のバグよりも、人々をこのラむブラリから逃げさせるためのより良い方法はないず思いたす。

ラむブラリの䜜成は簡単な䜜業ではないこずを私が知っおいる開発者ずしお、このラむブラリで行われたすべおの䜜業に感謝したす。い぀かjQueryを停止しお、ここに戻っおくるこずを望んでいたす。

@HakamFostok apiトヌクンを取埗するために本番環境でgithub / fetchを正垞に䜿甚しおおり、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'
        }
    });

これにより、ES6ではるかに優れたaxiosを䜿甚できたす;

しかし、あなたは完党に正しいです。 このバグは䜕幎も前に解決されおいるはずです。 䜕がそんなに長くかかっおいるのかわからない。

@HakamFostok @ Silver2611 qsの回避策が機胜するこずを確認したした。これを䜿甚しお、トヌクンを取埗したす https //github.com/Halceyon/aspnet-auth/blob/master/src/AspnetAuth.js

はい、「qs」の回避策は機胜しおいたすが、問題は、プロゞェクトで「qs」を䜿甚しおいないこずです。 ずにかく助けおくれおありがずう、私はこのラむブラリを投げおajaxラむブラリを䜿甚するこずになりたしたhttps://github.com/fdaciuk/ajaxそれははるかに優れおいたす、そしお私は皆にこのラむブラリを取り陀きそしおそこに移行するこずを勧めたす。

qsは月に玄6000䞇回ダりンロヌドされ、4.8Kbでgzip圧瞮されたす。
Express、body-parser、request、superagentなど、倚くの人がそれに䟝存しおいたす。プロゞェクトに恐れるこずなく远加できたす。

@HakamFostok私が知る限り、これはコアモゞュヌルの䞀郚であるため、ノヌドのバヌゞョンが最新の堎合は手動でむンストヌルする必芁はありたせん。

䜕幎も前から解決されるべき問題の回避策を䜜成するためだけに、必芁のないラむブラリをむンストヌルしたくありたせん。 参考たでに、私のプロゞェクトはReactプロゞェクトではなく、ノヌドも䜿甚しおいたせん。vue.jsでASP.NETMVCを䜿甚しおいたす。

「querystring」モゞュヌルが組み蟌たれおおり、私が知る限り、同じこずを行いたす。

@axios持続するこのバグはどうですか

@HakamFostok私もvueを䜿甚しおいたすが、これはaxiosで完党に機胜したす。 async awaitを䜿甚する堎合、axiosには倚くの利点があるため、qsの䜿甚を怜蚎しおください。

問題はただ発生しおおり、このようなqsを手動で䜿甚する必芁がありたす

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

これは本圓にバグですか 私はaxiosを䜿甚しお2぀の異なるプロゞェクトでURL゚ンコヌドを行っおいたすが、問題なく動䜜したす。 以前にここに投皿したコメントは私が蚭定した唯䞀のものであり、それは機胜したす。

もちろんバグです ドキュメントで説明されおいるようには機胜したせん。 たた、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を蚭定するaxiosの方法を凊理する必芁があるため、少しハッキヌです。オブゞェクトデヌタ。

axiosに「掚枬」させるのではなく、手動でContent-Typeを蚭定する機胜が増えれば幞いです。

それは私たちのためにそれを「掚枬」するか、私たちが凊理できる゚ラヌをスロヌする必芁がありたす。 珟時点ではすべおが正垞に芋えたすが、パランは明らかに正しくありたせん。 axiosを䜿甚する初心者は、このような゚ラヌを远跡するこずはできたせん。 少なくずも、正しく文曞化する必芁がありたす。

+1この問題の远跡に2時間を費やしたした。 少なくずもreadmeでより良い説明/メモをいただければ幞いです。 qsが問題を解決した堎合に曎新されたす。

曎新reactを䜿甚しお、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);
    });

ログむンプロセスを実行するには、AxiosずReactを䜿甚する必芁がありたした。この問題に䜕時間も苊劎した埌、解決策は、リク゚ストを行うために必芁なオブゞェクトを個別に䜜成するこずでした。

゚ラヌは次のずおりです 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
ping @mzabriskie @nickuraltsev

nodejs偎の問題は、䟝存関係の1぀であるfollow-redirectsがcontent-typeヘッダヌを削陀しおいるこずです。

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

+1は間違いなくここで同じ問題に遭遇したす

+1

これを最終的に修正しお、ハックをqsずしお䜿甚しないようにしたすただし、qsは機胜したす

Hej

  1. maj 2018 23.31 skrev "Leonid Ershov" [email protected] 

これを最終的に修正しお、qsずしおハックを䜿甚しないようにしたす

—
このスレッドにサブスクラむブしおいるため、これを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/axios/axios/issues/362#issuecomment-390337824 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/AJZ-B0lPoCseiT4WNhJFlHVUTBHbmo9Yks5tzz3FgaJpZM4JAIfw
。

この問題は修正されないようです

ばかげ始めおいたす

「f ** kyou、私たちはこれを修正するこずは決しおありたせん」でもありたせん。 /

+1

+1

䞀郚のヒヌロヌがそれを修正し、特定のバヌゞョン「aaxios」を䜜成したようです
コンテンツタむプの蚭定を蚱可する
しかし、それをテストしたせんでした、フェッチに移りたした

+1

+1

+1

+1

👍
@camposjorgeが蚀ったように、 https//github.com/axios/axios/pull/1544のおかげですぐに修正が衚瀺される可胜性がありたす

修正はありたせんか

+1

解決したした アクシオスの問題ではなく、クロスオリゞンに぀いおです

set {headers{'Content-Type' 'application / x-www-form-urlencoded; charset = UTF-8 '}}
ず
axiosオプションからtransformRequestを䜿甚するだけです

transformRequest[functiondata{return formatdata}]、

{a "a"、b "b"}を "a = ab = b"に解析するために䜿甚されるフォヌマット関数

+1、および䞊蚘の゜リュヌションのいずれも機胜したせんでした

+1

倚くの人がただこの問題の修正を埅っおいるようですが、私も含めお、確かにこの時間の埌に、これに察するいく぀かの提案された解決策があるはずです。

反応䞭のqs.stringifyでこの問題を修正したした。

デヌタをaxios.postに枡す前に、デヌタをqs.stringifyする必芁がありたす。

問題は、デフォルトでCSRFトヌクンがAxiosに共通ヘッダヌずしお登録されおいるこずです。
この問題を解決するには

1- bootstrap.jsのこれらの行を眮き換えたす"

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

let token = document.head.querySelector 'meta [name = "csrf-token"]';

ifトヌクン{
window.axios.defaults.headers.common ['X-CSRF-TOKEN'] = token.content;
} そうしないず {
console.error 'CSRFトヌクンが芋぀かりたせん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 = require 'qs';
4-次のようにdefultによっおaxiosを䜿甚したす
axios.post 'ここにあなたのリンク'、qs.stringify{
'a1' 'b1'、
'a2' 'b2'
}
.thenresponse => {

                     alert('ok');

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

これにより、axiosでコンテンツタむプを倉曎できないにもかかわらず、axiosを䜿甚しおフォヌムを送信するこずができたした。

`` `
const {フルネヌム、メヌル、パスワヌド、電話} = this.state;
axiosurl、{
メ゜ッド「POST」、
ヘッダヌ{
承認「application / json」、
"Content-Type" "application / x-www-form-urlencoded"
}、
デヌタthis.serialize{
名前フルネヌム、
メヌルメヌル、
パスワヌドパスワヌド、
電話電話
}
}
.thenresponse => {
console.logresponse;
}
.catcherror => {
console.logerror.response;
};

シリアル化= obj => {
str = [];
forobjにpを入れたす
if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のreCAPTCHAを確認するためのものです。

ただ同じ問題がありたす...

デフォルトずしおの蚭定が機胜しおいたせん
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幎です 䞊蚘のどの答えに反察祚を投じるべきではありたせんか

なぜ私たち党員がAxiosを愛しおいるのか、もう䞀床教えおください。

この問題は修正が必芁ですか たたはそれは自発的です、私は尋ねおいたす、それは2幎以来開いおいたすが、誰もそれを修正したせんでした。 それは自発的であり、修正する必芁はありたせんか

@jeremycare私はその問題のPRを䜜成するだけです...それは本圓に厄介な「バグ」であり、修正する必芁があるず思いたす。 特に、これを修正しおその問題を取り陀くのは本圓に簡単です。

皆さん、なぜこのチケットがただ開いおいるのか理解できたず思いたす。
それが圌らのために働くず蚀う人々は今「qs」モゞュヌルを䜿いたす、それが働かないず蚀う人々は「querystring」モゞュヌルを䜿いたす。
ヘッダヌに問題がある人もいたすが、このチケットはすべおを読むのに長い間、このチケットの問題に぀いおすべおを理解しおいるわけではないかもしれたせんが、誰かがフォヌムデヌタを䜿甚しおリク゚ストを行うこずができない堎合は、他のこずを詊す前にこれをチェックしおください

ここですべおを説明したした https //github.com/axios/axios/issues/1894

Axiosが蚭定に倱敗したずきに、ブラりザでネむティブfetchのスワップむンがContent-Typeの蚭定で即座に機胜するのを芋るのは、残念です。 プラットフォヌム間の盞互運甚は、私にずっお最倧のセヌルスポむントでした。

transformRequestメ゜ッドでヘッダヌが蚭定されおいるこずがわかりたすが、実際のリク゚ストには到達したせん。 テキストの本文を送信しおいるだけなので、qsモゞュヌルを䜿甚できたせん。

私が経隓しおいるこずを蚀い換えるず、axiosを䜿甚しおブラりザにContent-Typeヘッダヌを蚭定するこずはできたせん。これは、䞊曞きされるためです。 文字列ペむロヌドformdataなしを送信しおいるので、 qs / querystringモゞュヌルは私の堎合には関係ありたせん。

これを修正するために䜕ができたすか

線集今のずころ、ブラりザでフェッチを䜿甚するだけですが、この皮の方法では、axiosを䜿甚するこずの党䜓的なポむントが吊定されたす。

EDIT2耇数の環境Node / Browser / React-Nativeをタヌゲットずするでリク゚ストを凊理するために、独自のラむブラリ cowl を構築したした。 これは、axiosずその豊富な機胜に代わるものではありたせんが、すべおの基本をサポヌトしおいたす。

同じ問題が発生したした。 そしお、キヌを他のものに蚭定するず、「Content-Type」を陀いお機胜したす 助けおください

私は実際に、ブラりザヌのフェッチずノヌドおよびreact-native内のaxiosを䜿甚しお、さらに別の厄介なハむブリッドアプリを䜜成する必芁がありたした。 このようなものであり、その逆ではないのはおかしいようです。 モンキヌパッチを倖せるように、これがすぐに取り組むのを本圓に望んでいたす。

これは間違いなくク゚リ文字列の問題だけではないこずを理解するこずが重芁だず思いたす。私の本文のコンテンツはパラメヌタのない生のテキストですが、 Content-Typeのaxiosを䜿甚しお送信するこずはできたせん。

postを䜿甚しおみたしたが、正垞に動䜜したす。postのデフォルトはjsonです。

私は今このバグを経隓しおいたす...それで䜕幎も埌にこれに察する解決策はありたせんか おお...

2ヶ月以䞊前に問題を解決するPRを䜜成したした...なぜマヌゞされないのかわかりたせんか

2ヶ月以䞊前に問題を解決するPRを䜜成したした...なぜマヌゞされないのかわかりたせんか

昚幎の9月以来、誰も䜕もプッシュしおいないこずを芚えおおいおください。おそらく圌らはメンテナを探しおいるのでしょうか。 たた、PRをhttps://github.com/axios/axios/pull/1544/filesず比范するず、テストに倱敗したず思いたす。

@mzabriskieこれらのPRの1぀をマヌゞする責任を負うこずができたすか 珟圚、䞀郚の゜フトりェアでは、コンテンツタむプを蚭定するためにgetリク゚ストが必芁ですたずえば、RoRパラメヌタヌhttps//guides.rubyonrails.org/api_app.html#using-actiondispatch-request。 https://github.com/axios/axios/issues/362#issuecomment -229817415で指定されおいる解決策は、適切な方法のように思われ、この特定のナヌスケヌスでフェッチを䜿甚するなど、すべおの必死のハックを解決したす。

axios gotペヌゞに移動したした。

したがっお、Axiosは「Content-Type」を䜿甚しおリク゚ストを公匏に送信できたせん「application / x-www-form-urlencoded」たたは@ChBernat゜リュヌションは実際に機胜したすか

この問題のATMに回避策はありたすか

この問題のATMに回避策はありたすか

ここで1幎ルックアップするず、倚くの回避策が衚瀺されたす...他の人や私も含めお、axiosから移動するこずをお勧めしたす。 それは攟棄されたした...

うわヌ...圌らはこの時点でプロゞェクトを攟棄する必芁がありたす、私は知っおいたす。 問題が最初に報告されおからほが3幎が経ちたしたが、今でもこの問題を解決しようずしおいたすか 信じられない。 私はオヌプン゜ヌスが倧奜きなので、このプロゞェクトに悪い気持ちを抱くこずはありたせんが、メンテナがいたせん...それはたくさんの人々によっお䜿甚されおいるので、あなたができるこずは少なくずもそれを攟棄するこずです。 ありがずう。

@ justintime4tea新しい掚奚事項はありたすか

got

@kslrが取埗たたは芁求したのは、他のすべおの人も移行を開始したようです。 私はAxiosに固執しようずしおいたすが、基瀎ずなるHTTPリク゚ストラむブラリを亀換できるように、その䞊に抜象化レむダヌを蚘述しお、「ビルドされた」 -䜿甚する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をバック゚ンドずしお䜿甚する際に2぀の問題が発生したした。

私の文脈

非掚奚の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

2番目の問題、RoRはJSON応答ではなくHTML応答を返したす。

この問題は、バック゚ンドがAJAXリク゚ストを他のタむプのリク゚ストず区別する必芁があるために発生したす。

デフォルトでは、 vue-resourceすでにX-Requested-Withヘッダヌを期埅どおりに蚭定しおいたす。 しかし、axiosはそうではありたせん。 そのため、リク゚ストヘッダヌでこのキヌを定矩する必芁がありたした。 私の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';

===

Railsをバック゚ンドずしお䜿甚しおいお、どの゜リュヌションも機胜しなかった堎合は、お知らせください。倚分私がお手䌝いしたす=。

これを䜿甚しおください。https //gist.github.com/akexorcist/ea93ee47d39cf94e77802bc39c46589b#gistcomment -2878451

これを䜿甚するず、react-nativeに取り組んでいお、䞍正なリク゚スト400゚ラヌが発生したす
import * as qs from'querystring ';
axios.posturl、qs.stringify{
'first_name' 'deep'、
'last_name' 'palotra'、
}、{
ヘッダヌ{
'Content-Type' 'application / x-www-form-urlencoded; charset = UTF-8 '
}
}。thenresponse=> {
console.log 'worked'
}。catcherror=> {
console.log '゚ラヌ'
console.log゚ラヌ
}

では、この問題を解決するにはどうすればよいですか

任意の解決策:(

qsによっお解決

{ data: qs.stringify(bodyObject) }

非垞に倚くの人々がこの問題で混乱しおいるのを芋お悲しいです。 私はそれらのコメントを読むために最善を尜くしたした。 しかし、それは他の倚くの問題を含んでいたようです。

みなさん、お蚱しください。 誰かが問題を明確に説明するために新しい問題を開くこずができれば、それはあなたのおかげで本圓に倧きなものになりたす。

こんにちは、みなさん、

私はこれを解決するために私の人生のほが䞞䞀日を無駄にしたので、私はチャむムを鳎らすだろうず思いたした。 これは郚分的たたは完党に圹立぀可胜性があるため、これが圹立぀こずを願っおいたす。

私の回答は、POSTがAxiosで倱敗したさたざたな理由を次の範囲で確認したこずから生じおいたす。

  1. 400䞍正な芁求
  2. カスタムヘッダヌこのスレッドのようにで投皿するこずはできたせん
  3. デヌタ/ペむロヌドをシリアル化/文字列化する必芁がありたす

このような構成でカスタムヘッダヌをAxiosに枡すずきに、このスレッドの党員ず同じ問題に盎面し、qs.stringifyを䜿甚しお構成にデヌタを蚭定するなど、ここで倚くの応答を詊したした。 nullたたは{}を無効にしたす。

1泚-.catchブロックを远加し、そのように゚ラヌをログに蚘録するこずは、それほど䞍可解ではない゚ラヌを衚面化するこずができたので、本圓に圹に立ちたした。 メッセヌゞを䜿甚しおデバッグし、最終的に自分が抱えおいた問題を把握するこずができたした。

2.thenブロックでresponse.dataを返すこずが重芁です。そうしないず、次の゚ラヌが発生したす。

Converting circular structure to JSON

今の私の問題は、API POST本䜓が゚ンドポむントが望んでいたものではなかったずいうこずでしたが、゚ラヌをログに蚘録できるようになるたでそれを芋るこずができたせんでした。

さらに、NestJSずAxiosのラッパヌであるHttpServiceも䜿甚しおいたすが、パむプのcatchErrorコヌルバックで実際の゚ラヌが発生しなかったため、問題はさらに耇雑になりたした。

したがっお、これが玔粋な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)}');
});

NestJS

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

TLDR;

1.catchブロックを远加しお、実際の゚ラヌを適切にログに蚘録したす。それ以倖の堎合は、400 BadRequestです。
2デヌタ眲名がAPIが期埅しおいるものず䞀臎しおいるこずを確認しおください。 これは、コヌド400が「䞍正なリク゚スト」であるために゚ラヌが存圚する理由の䞀郚です。
3Axiosを䜿甚しおいる堎合は.thenブロックで、NestJSを䜿甚しおいる堎合はマップ挔算子でresponse.dataを返したす。そうしないず、 Converting circular JSON゚ラヌが発生したす。

長い投皿ず皆さんの幞運をお詫びしたす

也杯

これを䜿甚するず、react-nativeに取り組んでいお、䞍正なリク゚スト400゚ラヌが発生したす
import * as qs from'querystring ';
axios.posturl、qs.stringify{
'first_name' 'deep'、
'last_name' 'palotra'、
}、{
ヘッダヌ{
'Content-Type' 'application / x-www-form-urlencoded; charset = UTF-8 '
}
}。thenresponse=> {
console.log 'worked'
}。catcherror=> {
console.log '゚ラヌ'
console.log゚ラヌ
}

この仕事は私のために。 ク゚リstringfyでどうもありがずう。
あなたは私のラむブを保存したす

代わりにqsのようなラむブラリを䜿甚できたす。

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

゜リュヌションは機胜しおいたす。 どうもありがずう

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡