vue3 axios 怎么封装api(vue中如何简单封装axios浅析)
类别:编程学习 浏览量:2460
时间:2021-11-08 16:16:23 vue3 axios 怎么封装api
vue中如何简单封装axios浅析把axios注入到Vue中
import axios from 'axios'; Vue.prototype.$axios = axios;
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, }
简单测试:
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中配置跨域:
<!-- 接口跨域配置 --> <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:
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的原因
axios.defaults.withCredentials= true;
总结
到此这篇关于vue中如何简单封装axios的文章就介绍到这了,更多相关vue封装axios内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
您可能感兴趣
- vue接收网络请求数据类型配置(vue中对接Graphql接口的实现示例)
- 面试问vue掌握程度如何回答(面试最常问的13种Vue修饰符)
- vue中的watch属性(vue Watch和Computed的使用总结)
- vue实现展开动画(Vue组件实现旋转木马动画)
- vuejs组件使用教程交流(Vue vee-validate插件的简单使用)
- google 调试vue(Vue实现Google第三方登录的示例代码)
- vue加element ui弹窗(Vue中ElementUI分页组件Pagination的使用方法)
- vue组件轮播(vue+rem自定义轮播图效果)
- vue和springboot实战项目(vue+spring boot实现校验码功能)
- vueassets文件路径(vue如何根据url下载非同源文件)
- vue移动端图片放大效果实现(vue实现图片切换效果)
- vue-router的安装(详解Vue-Router的安装与使用)
- vue的弹框怎么用(vue自定义弹框效果确认框、提示框)
- vue-cli4开发多页面应用(深入理解Vue-cli4路由配置)
- vue离线地图有哪些(vue 集成腾讯地图实现api附DEMO)
- vue前端打包发布教程(Vue项目打包、合并及压缩优化网页响应速度)
- 吉善缘《聚宝金蟾》金蟾招财摆件 三足全铜蟾蜍客厅店铺开业礼品(吉善缘聚宝金蟾金蟾招财摆件)
- 招财化煞神兽,金蟾变了(招财化煞神兽金蟾变了)
- 26岁杨紫的白素贞遇上24岁鞠婧祎,哪个最美(26岁杨紫的白素贞遇上24岁鞠婧祎)
- 鞠婧祎和杨紫两种风格的女生,你心里谁比较美(鞠婧祎和杨紫两种风格的女生)
- 三千年第一美女鞠婧祎出演白素贞pk杨紫,颜值胜赵雅芝王祖贤(三千年第一美女鞠婧祎出演白素贞pk杨紫)
- 成都轨道交通13号线一期工程最新进展(成都轨道交通13号线一期工程最新进展)
热门推荐
- mysql8使用技巧(一篇学会MySQL 8.0 ROLE管理)
- Docker 部署单机版 Pulsar 和集群架构 Redis(开发神器)的方法(Docker 部署单机版 Pulsar 和集群架构 Redis开发神器的方法)
- python怎样读取mysql数据(使用Python将Mysql的查询数据导出到文件的方法)
- nginx如何配置不显示nginx名字(Nginx安装完成没有生成sbin目录的解决方法)
- css响应式网格布局(CSS网格布局的示例代码)
- laravel前后端分离实现排序(laravel自定义分页的实现案例offset和limit)
- tp5微信支付接口开发案例(PHP实现的微信APP支付功能示例基于TP5框架)
- 网站服务器需要买哪些设备(选择网站服务器需要注意哪些地方?)
- vmware 安装失败(安装使用Vmware出现的问题及解决方法)
- iframe解决跨域问题(跨域修改iframe页面内容详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9