axios post封装对象到后端_Vue简单封装axios之解决post请求后端接收不到参数问题...

本文介绍了在Vue项目中如何封装axios的get和post请求,并解决post请求后端接收不到参数的问题。通过创建api文件夹,设置axios实例的headers,使用qs库进行参数序列化,确保后端能正确接收数据。示例代码包括fetchGet和fetchPost方法的实现,以及在Login.vue和Home.vue组件中调用这些方法的例子。
摘要由CSDN通过智能技术生成

1.在src/下新建api文件夹,api/下新建index.js和public.jsZAr免费资源网

在public.js中:ZAr免费资源网

import axios from 'axios';

import qs from 'qs'

import router from '../router'

import { MessageBox} from 'mint-ui'

// 注意点,按照以下写

var instance = axios.create();

instance.defaults.timeout = 10000;

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

export default {

fetchGet(url, params = {}) {

return new Promise((resolve, reject) => {

axios.get(url, params).then(res => {

if(res.data.code === 302) {

MessageBox('提示', '登录失效,请重新登录');

MessageBox.alert('登录失效,请重新登录', '提示').then(action => {

router.push("/login");

});

}

resolve(res.data);

}).catch(error => {

reject(error);

})

})

},

fetchPost(url, params = {}) {

/*

axios post请求后端接收不到参数问题:

解决方案一:有效,但是兼容性不是很好,不是所有浏览器都支持

let data = new URLSearchParams()

for (var key in params) {

data.append(key, params[key])

}

*/

// 解决方案二:使用qs模块(axios中自带),使用qs.stringify()序列化params

return new Promise((resolve, reject) => {

axios.post(url, qs.stringify(params)).then(res => {

resolve(res.data);

}).catch(error => {

reject(error);

})

})

}

}

2.在index.js中:ZAr免费资源网

import http from './public'

export const getStation = (params) => {

return http.fetchGet('/hydro/rest/getBelongUser', params);

}

export const userLogin = (params) => {

return http.fetchPost("/hydro/rest/login", params);

}

3.在Login.vue中调用post请求方法:ZAr免费资源网

import {userLogin} from "../../api/index"

export default {

name: 'app',

data() {

return {

Username: "",

Password: ""

}

},

methods: {

toLogin() {

let params = {

username: this.Username,

password: this.Password

};

userLogin(params).then(res => {

if(res.code === 200) {

this.$router.push("/home")

}

})

}

}

}

#### 4.在Home.vue调用get请求方法ZAr免费资源网

{{stationName}}

import {getStation} from "../../api/index"

export default {

data() {

return{

stationName: ""

}

},

created() {

getStation().then(res => {

this.stationName = res.msg;

})

}

}

以上所述是小编给大家介绍的Vue简单封装axios之解决post请求后端接收不到参数问题,希望对大家有所帮助!ZAr免费资源网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值