はじめに:リクエストを送信する際に成功axios使用しない理由だけで同僚は、この問題が発生したプロジェクトを行う際に、尋ねるが、要求はデータよりも少ないですが、与えられている、次の図は、エラー要求神です
次のようにコード内VUEは、次のとおりです。
this.$http.post('/getMatterList.do',{"matterIds":"1,2,3"})
.then((res)=>{ console.log(res); })
一見、何も間違ってはああ、そのような要求は、それのようにデモの公式ドキュメントaxios、それで作られていないが、また間違っているではないということ?私たちは、送り出されたブラウザ要求を詳しく見てみ
トランスポートパラメータの何も奇妙な形がおなじみのフォーム・データが、要求ペイロードではありませんが見つかりません。Moのパニックは、実際には、限り、我々は二段階が設定さそうであるように解決することができます
- Qsがaxiosあるので、それが直接導入されてくるURLの標的配列の形式に変換するQs.stringify()付き
- 設定要求「のContent-Type」の前に「アプリケーション/ X-WWW-形態は、URLエンコード」であります
import Qs from 'qs'
var data = Qs.stringify({"matterIds":"1,2,3"}); this.$http.post('/getMatterList.do',data, {headers:{'Content-Type':'application/x-www-form-urlencoded'}}).then((res)=>{ console.log(res) })
我々は適切に適切に、見た後、
問題は解決しますが、なぜですか?あなたには、いくつかの情報を確認した後、私は戻ってきました
保管場所を要求し、ポストリクエストパラメータが同じではありません取得し、リクエストパラメータを取得HTTPリクエストのキーと値のペアのあるURLの後ろに道を、パラメータのポストを要求するための鍵で道リクエストボディをの
- リクエストを取得
- ポスト要求
なぜ「のContent-Type」の前に要求を設定します。
私たちはさまざまな要求を使用すると、送信モードパラメータが同じではありませんが、時間パラメータ、方法が使用されるが、それは私たちの要求を取るためのインターフェイスで同じサーバーで、私たちは、実際には、取得するためにrequest.getParameter(キー)を使用しています中間Tomcatが後端(キー)request.getParameterを統一するデータを得ることができるように、要求パラメータマップで解析されたパラメータの解析処理パラメータ、処理されたフォームを要求し、Tomcatを解決する時期ためそれは「contentTypeの」、「のcontentType」が「アプリケーション/ x-www-form-urlencodedで」であるとき、それは身体データ読み取り要求をすることであろうことで、現在のリクエストがPOSTリクエストである知っている方法です。
なぜ形式でURLにオブジェクトをシリアル化するためにQs.stringify()を使用する必要があります。
非常に初めに、我々はQs.stringify(と、リクエストパラメータはキーと値のペアの形式でリクエストボディ中に存在する後、前記)ペアにオブジェクトを渡すことです。
最後に、問題のための時間でaxiosのVUEで再度設定して、すべての要求が多すぎるトラブルを避けるために、グローバル設定を行うための要求を投稿