1.安装

利用npm安装

npm install axios --save

2.引入即可使用

import axios from 'axios'

3.目录

4.各个文件设置:

(1)env.js

export default {
// 接口地址
baseURL: 'http://localhost:8090/scheduleweb/',
isDev: true
}

(2)index.js

备注:road.js定义了一个新的Vue对象,目的是调用elementUI的提示信息($message,比如当服务器连接失败时,提示“服务器连接失败”),不需要用到的可移除相关配置

import Env from './env';
import axios from 'axios'
import {road} from '../road.js'
import routerIndex from '../router/index' let token = ''; axios.defaults.withCredentials = false;
axios.defaults.headers.common['token'] = token;
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';//配置请求头 //添加一个请求拦截器
axios.interceptors.request.use(function (config) {
let user = JSON.parse(window.sessionStorage.getItem('access-user'));
if (user) {
token = user.token;
}
config.headers.common['token'] = token;
//console.dir(config);
return config;
}, function (error) {
// Do something with request error
console.info("error: ");
console.info(error);
return Promise.reject(error);
}); // 添加一个响应拦截器
axios.interceptors.response.use(function (response) {
if (response.data && response.data.code) {
if (parseInt(response.data.code) === 108 || parseInt(response.data.code) === 109 || response.data.msg === 'TOKEN失效,请重新登录' || response.data.msg === 'TOKEN不存在') {
//未登录
response.data.msg = "登录信息已失效,请重新登录";
road.$message.error(response.data.msg);
routerIndex.push('/login');
}
if (parseInt(response.data.code) === -1) {
road.$message.error("请求失败");
}
}
return response;
}, function (error) {
// Do something with response error
console.dir(error);
road.$message.error("服务器连接失败");
return Promise.reject(error);
}) //基地址
let base = Env.baseURL; //测试使用
export const ISDEV = Env.isDev; //通用方法
export const POST = (url, params) => {
const getTimestamp = new Date().getTime();
return axios.post(`${base}${url}?timer=${getTimestamp}`, params).then(res => res.data)
} export const GET = (url, params) => {
const getTimestamp = new Date().getTime();
return axios.get(`${base}${url}?timer=${getTimestamp}`, {params: params}).then(res => res.data)
} export const PUT = (url, params) => {
return axios.put(`${base}${url}`, params).then(res => res.data)
} export const DELETE = (url, params) => {
return axios.delete(`${base}${url}`, {params: params}).then(res => res.data)
} export const PATCH = (url, params) => {
return axios.patch(`${base}${url}`, params).then(res => res.data)
}

(3)api_user.js

该文件具体展示调用方法

import * as API from './'

export default {
//验证手机号是否已注册
isExistUser: params => {
return API.GET('login/isExistUser', params);
},
//注册
register: params => {
return API.POST('login/userRegister', params)
},
//密码登录
login: params => {
return API.POST('login/userLogin', params)
}
}

5.在组件中调用

import API from '../api/api_user'
import md5 from 'js-md5' export default {
data() {
return {
loading: false
}
},
methods: {
login() { // 登录
let that = this;
that.loading = true; // 按钮点击后设置loading
let params = { // 参数
userName: "user1",
pwd: md5("123456"),
type: 3
}
// 调用接口
API.login(params).then(function (res) {
if (res.code === 0) {
let userInfo = {
id: res.data.user.id,
mobilePhone: res.data.user.mobilePhone,
nickname: res.data.user.userName,
gender: res.data.user.gender,
photo: res.data.user.photo,
token: res.data.token,
timestamp: new Date().getTime()
};
localStorage.setItem('access-user', JSON.stringify(userInfo)); // 将用户信息存到localStorage中
that.$router.replace({path: '/'}); // 登录成功跳转
} else {
that.loading = false;
that.$message.error(res.msg);// elementUI消息提示
}
}); }
}
}

axios配置及使用(发起请求时带上token)的更多相关文章

  1. 02 . 处理axios的三个问题 :设置基路径/axios挂载到vue原型/请求时自动携带token

    //使用API时必须在请求头中使用 Authorization 字段提供 token 令牌 import axios from 'axios' // 处理axios的三个问题 // 处理一:基路径 a ...

  2. vue+vue-resource设置请求头(带上token)

    前言 有这样的一个需求,后台服务器要求把token放在请求头里面 嗯一般是通过data里面通过参数带过去的 第一种方法 全局改变: Vue.http.headers.common['token'] = ...

  3. axios get,post请求时带headers

    axios post请求时带headers: axios.post("http://xxx.com/xxx/xxx/xxx?", { 'queslistid': this.kemu ...

  4. axios中为所有请求带上Token头

    axios中为所有请求带上Token头 https://www.imooc.com/article/27751

  5. postman带上token对接口进行测试

    根据验证码进行登陆,登录之后返回token.然后请求其他接口时在header头中带上token访问其他接口进行测试 账户信息输入验证码 登陆成功,看到返回的token 我们这个项目可以刷新一下toke ...

  6. ajax 跨域请求没有带上cookie 解决办法

    公司项目前后端分离.. 前端全部html 静态页面.. 后端java 接口服务 由于前后端分离,出现跨域问题. 为了解决,我们使用jsonp 方式请求接口服务,暂时解决了跨域问题(使用jquery a ...

  7. Vue2使用Axios发起请求教程详细

    当你看到该文章时希望你已知晓什么是跨域请求以及跨域请求的处理,本文不会赘述 本文后台基于Springboot2.3进行搭建,Controller中不会写任何业务逻辑仅用于配合前端调试 Controll ...

  8. .NetCore HttpClient发送请求的时候为什么自动带上了一个RequestId头部?

    奇怪的问题 最近在公司有个系统需要调用第三方的一个webservice.本来调用一个下很简单的事情,使用HttpClient构造一个SOAP请求发送出去拿到XML解析就是了. 可奇怪的是我们的请求在运 ...

  9. 请求时token过期自动刷新token

    1.在开发过程中,我们都会接触到token,token的作用是什么呢?主要的作用就是为了安全,用户登陆时,服务器会随机生成一个有时效性的token,用户的每一次请求都需要携带上token,证明其请求的 ...

随机推荐

  1. Dart介绍和环境搭建

    /* Dart介绍: Dart是由谷歌开发的计算机编程语言,它可以被用于web.服务器.移动应用 和物联网等领域的开发. Dart诞生于2011年,号称要取代JavaScript.但是过去的几年中一直 ...

  2. SeetaFace2 cmake VS2015编译编译

    cmake Selecting Windows SDK version 10.0.17134.0 to target Windows 10.0.18362. == BUILD_VERSION: v2. ...

  3. win7、win10系统电脑开机后小键盘灯不亮怎么办?

    摘自:https://www.pconline.com.cn/win10/1113/11136072.html win7.win10系统 电脑开机后小键盘灯不亮怎么办?这是不少用户最近都在反馈的问题. ...

  4. 数据结构与抽象 Java语言描述 第4版 pdf (内含标签)

    数据结构与抽象 Java语言描述 第4版 目录 前言引言组织数据序言设计类P.1封装P.2说明方法P.2.1注释P.2.2前置条件和后置条件P.2.3断言P.3Java接口P.3.1写一个接口P.3. ...

  5. numpy包中,与线性代数相关的模块——linalg(利那隔)

    https://github.com/scalanlp/breeze/wiki/Linear-Algebra-Cheat-Sheethttps://docs.scipy.org/doc/numpy-1 ...

  6. angular2 ng-if

    ng-if <td ><div class="td-li" > <a (click)="open(i)" class=" ...

  7. web端自动化——Python读取txt文件、csv文件、xml文件

    1.读取txt文件 txt文件是我们经常操作的文件类型,Python提供了以下几种读取txt文件的方式. 1)read(): 读取整个文件. 2)readline(): 读取一行数据. 3)readl ...

  8. git的使用学习(一)git的简介和安装

    Git简介 Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git有什么特点?简单来说就是:高端大气上档次! 那什么是版本控制系统? 如果你用Microsoft Word写 ...

  9. beyond Compare 30天过期后的处理办法

    打开Beyond Compare 4,提示已经超出30天试用期限制,解决方法: 修改C:\Program Files\Beyond Compare 4\BCUnrar.dll,这个文件重命名或者直接删 ...

  10. ubuntu安装mysql遇到的坑----解决Mysql报错缺少libaio.so.1

    最近学习大数据,涉及到hive的部分需要安装mysql,于是就在linux环境下尝试安装,对于我这个linux小白来说,中间遇到很多坑爹问题,在这里做一个记录. 我参考的mysql安装博客: http ...