我是靠谱客的博主 乐观小鸭子,这篇文章主要介绍vue中如何简单封装axios浅析,现在分享给大家,希望可以做个参考。

把axios注入到Vue中

复制代码
1
2
import axios from 'axios'; Vue.prototype.$axios = axios;
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import axios from 'axios' axios.defaults.timeout = 5000; //响应时间 axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'; //配置请求头 axios.defaults.withCredentials= true; //带cookie axios.defaults.baseURL = 'http://localhost:8080/'; //配置接口地址 //POST传参序列化(添加请求拦截器) axios.interceptors.request.use((config) => { //在这里可以添加序列化代码,根据后端而定,我用的SSM后端接受Json对象,假如需要序列化可以用qs组件 return config; },(error) =>{ console.log('错误的传参') return Promise.reject(error); }); //返回状态判断(添加响应拦截器) axios.interceptors.response.use((res) =>{ //对响应数据做些事 if(!res.data.success){ return Promise.resolve(res); } return res; }, (error) => { console.log('网络异常') return Promise.reject(error); }); //返回一个Promise(发送post请求) export function fetchPost(url, params) { return new Promise((resolve, reject) => { axios.post(url, params) .then(response => { resolve(response); }, err => { reject(err); }) .catch((error) => { reject(error) }) }) } 返回一个Promise(发送get请求) export function fetchGet(url, param) { return new Promise((resolve, reject) => { axios.get(url, {params: param}) .then(response => { resolve(response) }, err => { reject(err) }) .catch((error) => { reject(error) }) }) } export default { fetchPost, fetchGet, }

简单测试:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
loginPost: function() { let params = { 'password': '123', 'username': 'admin' } http.fetchPost('/login', params).then((data) => { console.log(data) }).catch(err => { console.log(err) }) }, hello: function() { http.fetchGet('/hello', "").then((data) => { console.log(data) }).catch(err => { console.log(err) }) },

post请求:

get请求:

跨域问题,这里是在后端配置的:

在SpringMVC.xml中配置跨域:

复制代码
1
2
3
4
5
6
7
8
<!-- 接口跨域配置 --> <mvc:cors> <!-- allowed-methods="*" --> <!-- 表示所有请求都有效 --> <mvc:mapping path="/**" allowed-origins="*" allowed-methods="POST, GET, OPTIONS, DELETE, PUT" allowed-headers="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With" allow-credentials="true"/> </mvc:cors><!-- 接口跨域配置 -->

接口配置:

在Vue中配置 创建一个vue.config.js:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
module.exports = { devServer: { proxy: { '/api': { target: 'http://127.0.0.1:8080', // 在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题 changeOrigin: true, ws: true, pathRewrite: { '^/api': '' // 替换target中的请求地址,也就是说以后你在请求http://api.jisuapi.com/XXXXX这个地址的时候直接写成/api即可 } } } } }

后端也能正常获取cookie。

当然要注意下面这个配置,这个是带cookie的原因

复制代码
1
axios.defaults.withCredentials= true;

总结

到此这篇关于vue中如何简单封装axios的文章就介绍到这了,更多相关vue封装axios内容请搜索靠谱客以前的文章或继续浏览下面的相关文章希望大家以后多多支持靠谱客!

最后

以上就是乐观小鸭子最近收集整理的关于vue中如何简单封装axios浅析的全部内容,更多相关vue中如何简单封装axios浅析内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(117)

评论列表共有 0 条评论

立即
投稿
返回
顶部