vue项目中axios的封装、拦截及使用

news/2024/7/19 13:20:52 标签: vue, ajax, js

jsbaseUrl_0">创建constant.js文件保存baseUrl

创建constant.js(随意) 保存baseUrl
var baseUrl = process.env.NODE_ENV === 'production' ? 'http://生产环境地址' : 'http://开发环境地址'
export default baseUrl

js_6">创建request.js文件创建请求

创建request.js
// 引入axios
import axios from 'axios'
// 引入baseUrl
import baseUrl from '@/api/constant'
// 引入iview 全局提示
import {
    Message
} from 'view-design'
axios.defaults.withCredentials = true;
// 创建服务
const service = axios.create({
    timeout: 1000000,  // request timeout
    baseURL: baseUrl, // url = base url + request url
    headers: {
        'Content-type': 'application/json'
    },
    withCredentials: true // send cookies when cross-domain requests
});
// 请求拦截器
service.interceptors.request.use(
    (config) => {
        config.url = baseUrl + config.url;
        return config;
    },
    err =>{ Promise.reject(err); console.log(err)},
);
// 响应拦截
service.interceptors.response.use((response) => {
    if(!response.data.success) {
    	// code判断,做出相对应操作
       if (response.code === '401'){
            Message.error(response.data.msg || response.data.message)
        }  else if (response.data.code === '500'){
            Message.error(response.data.msg + "请重新登录!"|| response.data.message + "请重新登录!")
            window.location.href = '/'
        }
        else {
            return response;
        }
        if (response.data.code !== 200) {
            Message.error(response.data.message)
        }
   		} else {
        	return response
  		}
});
// 导出
export default service

js_58">创建tools.js封装接口

创建tools.js文件 里面是封装的接口
// 引入request
import request from '../utils/request'
// 引入qs
import qs from "querystring";
// 后台给的接口的封装
// 获取部门下人员
// data (requre参数) data1(body体)
function searchUserInDept(data, data1) {
    return request({
        url: '/user/searchUserInDept?' + qs.stringify(data),
        method: 'post',
        data: data1
    })
}
// 获取当前用户菜单
function getWebMenus() {
    return request({
        url: '/getWebMenus',
        method: 'post',
    })
}
// 导出
export {
	searchUserInDept,
	getWebMenus
}

在组件中使用

<script>
// 引入
 import {
        searchUserInDept,
		getWebMenus
    } from '@/utils/tools'

mounted() {
           // 获取当前用户菜单
            getWebMenus().then((res) => {
                if (res.data.success){
					console.log(res)
                } else {
            	    console.log(res.data.msg)
                }
            }).catch((error) => {
         		 console.log(error)
       	    });
			 //获取部门下人员
			 searchUserInDept(data,data1).then((res) => {
			 	if(res.data.success){
			 		console.log(res)
			 	} else {
			 		 console.log(res.data.msg)
			 	}
			}).catch((error) => {
          		console.log(error)
            });
 }
</script>

最后

request.js和tools.js文件我是创建在utils文件夹中的,constant.js创建在api文件夹中。
这仅仅是我个人的封装习惯,仅供参考,如果能帮助到别人那就很好了。如有错误请多指正,谢谢! 

http://www.niftyadmin.cn/n/1342610.html

相关文章

layui common

一、 <% page contentType"text/html;charsetUTF-8" language"java" %><% taglib uri"http://java.sun.com/jsp/jstl/core" prefix"c"%><% taglib uri"http://java.sun.com/jsp/jstl/fmt" prefix"fmt&q…

html css旋转魔方 gif背景图

平时休息时做的css小游戏html <div id"all"><div class"title"><div style"width: 80%; margin: 0 auto; text-align: center">good good study day day up</div></div><div class"wrap" style&q…

Jenkins 搭建 .NET Core 持续集成环境

关于c#的.Net FrameWork 的集成环境以及MsBuild的配置可以看 jenkins搭建.NET FrameWork持续集成环境 这篇文章 关于.NET Core 这个项目我搭了很久 其实很简单 因为不懂.NET FrameWork 和.NetCore 所以走了很大的弯 我们用NuGet还原.NET Core项目会报以下错误&#xff1a; erro…

vue 日历插件ele-calendar

由于项目中需要一个日历功能我比较懒不想自己写所以就找了一插件,不过样式不符合要求自己又改了一下。 原版样式修改后样式全局引入 npm install ele-calendar组件中使用 //html部分 <template><div><div style"width: 335px;height: 600px;margin: 30p…

怎样在文章末尾添加尾注(将尾注的数字变为方括号加数字)

在进行文章编写或者需要添加注解时&#xff0c;需要进行尾注的添加&#xff0c;下面将详细说明如何进行尾注的添加 操作 首先打开需要进行添加尾注的文档&#xff0c;将光标移动至需要进行添加尾注的文字后。 紧接着在上方工具栏中&#xff0c;选择引用&#xff0c;在引用页…

《Effective C++第三版》读书笔记——设计与声明

4 设计与声明 ~~~~~~~~~~~~~ 4.1 让接口容易被正确使用,不易被误用 1. 许多客户端错误可以因为导入新类型而获得预防. 一旦使用了新类型,限制其值就顺其自然了. 2. 任何接口如果要求客户必须记得做某事,就是有着不正确使用的倾向,因为客户可能会忘记做那件事. 4…

Spring Boot入门第二天:一个基于Spring Boot的Web应用,使用了Spring Data JPA和Freemarker。...

原文链接 今天打算从数据库中取数据&#xff0c;并展示到视图中。不多说&#xff0c;先上图&#xff1a; 第一步&#xff1a;添加依赖。打开pom.xml文件&#xff0c;添加必要的依赖&#xff0c;完整代码如下&#xff1a; <?xml version"1.0" encoding"UTF-8…

vue独立开发项目搭建流程

首先github上创建仓库 方便代码管理我这边使用git的工具sourcetree ,先把项目拉取到本地创建vue项目,这个就不说太多了 创建好了基本就是这个样子了 安装常用插件(axios,ui插件,echarts…什么的) 这些网上都有,直接查一下,npm安装就好了 这是我这个项目用到的,在package.j…