axios的post請求方法---以Vue示例

Axios向後端提交數據的參數格式是json,而並不是用的是form傳參,post表單請求提交時,使用的Content-Type是application/x-www-form-urlencoded,而使用原生AJAX的POST請求若是不指定請求頭RequestHeader,默認使用的Content-Type是text/plain;charset=UTF-8。vue

axios 請求配置中,transformRequest配置容許在向服務器發送前,修改請求數據。ios

 // `transformRequest` 容許在向服務器發送前,修改請求數據 // 只能用在 'PUT', 'POST' 和 'PATCH' 這幾個請求方法 // 後面數組中的函數必須返回一個字符串,或 ArrayBuffer,或 Stream transformRequest: [function (data) { // 對 data 進行任意轉換處理 return data; }],

能夠使用該配置修改請求參數。npm

參考資料:https://www.kancloud.cn/yunye/axios/234845json

以下是axios的兩種方法axios

方法一:segmentfault

this.axios({ url: '/user', method: 'post', data: { firstName: 'Fred', lastName: 'Flintstone' }, transformRequest: [function (data) { // Do whatever you want to transform the data
    let ret = ''
    for (let it in data) { ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' } return ret }], headers: { 'Content-Type': 'application/x-www-form-urlencoded' } })

固然能夠在main.js中進行配置後端

// main.js
 import Axios from 'axios' import VueAxios from 'vue-axios' const MyAxios = Axios.create({ transformRequest: [function (data) { // 將數據轉換爲表單數據
    let ret = ''
    for (let it in data) { ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' } return ret }], headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }) Vue.use(VueAxios, MyAxios)

參考連接:https://segmentfault.com/q/1010000008462977數組

方法二:使用qs模塊/querystring模塊服務器

//import qs from 'querystring'
import qs from 'qs'
//export default{ .. }
this.axios({ url: '/user', method: 'post', data: { firstName: 'Fred', lastName: 'Flintstone' }, transformRequest: [function (data) { data = qs.stringify(data); return data; }], headers:{'Content-Type':'application/x-www-form-urlencoded'} }) })

此方法操做前,須要先安裝qsapp

npm install --save qs

參考連接:https://blog.csdn.net/shooke/article/details/76038967

相關文章
相關標籤/搜索