当前位置: 首页 >前端技术 > 封装axios,带请求头和响应头

封装axios,带请求头和响应头

import axios from "axios";import qs from "qs"; //处理参数import router from '../router'; //引入路由import { Loading, Message } from 'element-ui';let loading = null;//开始加载动画function openLoading() {loading = Loading.service({lock: true,text: '拼命加载中...',background: 'rgba(0,0,0,.7)'});}//关闭加载动画function closeLoading() {loading.close();}//添加请求拦截器axios.interceptors.request.use(config => {//加载动画openLoading()if (localStorage.sessionId) { //如果我的sessionId存在(sessionId其实就是token)// 设置统一的请求headerconfig.headers.Authorization = localStorage.sessionId //授权(每次请求把sessionId带给后台)}retu config;},error => {retu Promise.reject(error);});//添加响应拦截器axios.interceptors.response.use(response => {  //逻辑处理if (response.data.errorCode == -1) { //后端反回的状态值,本应该errorCode是statusMessage({type: 'waing',duration: 1500,showClose: true,message: '当前登录已失效,请从新登录!'})router.push("/logon")//让用户从新回到登录页面}retu response;},error => {closeLoading() //请求超时清除加载动画retu Promise.resolve(error.response);});axios.defaults.baseURL = "http://127.26.41.181:8081/nei";// 开发axios.defaults.headers.post["Content-Type"] = "application/json";// axios.defaults.headers.post["X-Requested-With"] = "XMLHttpRequest";axios.defaults.timeout = 6000; //设置请求超时时间function checkStatus(response) {retu new Promise((resolve, reject) => {if (response && (response.status === 200 || response.status === 304 || response.status === 400)) {try {closeLoading() //关闭加载动画} catch (e) {//抛出异常console.log(e)}resolve(response.data);} else {try {closeLoading() //关闭加载动画} catch (e) {//抛出异常console.log(e)}Message({type: 'error',showClose: true,message: '网络异常,请检查网络连接是否正常!'})}});}export default {post(url, params) {retu axios({method: "post",url,data: params}).then(response => {retu checkStatus(response);});},get(url, params) {params = qs.stringify(params);retu axios({method: "get",url,params}).then(response => {retu checkStatus(response);});}};

使用:在main.js里面引入这个文件,并挂载到vue原型上,这样可以通过this.xxxx去拿到

import axios from './api/api.js'//引入axios文件夹Vue.prototype.$axios = axios;//挂载到整个Vue原型上

axios 的使用:在需要请求的页面如下引用

//post请求this.$axios.post('url',{key:value}).then(res =>{cons.log(res,'后端返回数据') })//get请求this.$axios.get('url?key=value').then(res =>{cons.log(res,'后端返回数据') })

 

作者:龙卷风吹毁停车场
来源链接:https://www.cnblogs.com/tlfe/p/11911915.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/front/112640.html

标签:Axios
分享给朋友:

“封装axios,带请求头和响应头” 的相关文章