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. 处理 Bootstrap CSS 冲突

    问题: Bootstrap 是Web上最流行的CSS框架.它使创建漂亮,响应迅速的设计非常容易. 但是,有时候并不希望在整个网站上使用 Bootstrap,您只需要使用Bootstrap CSS的一部 ...

  2. 一台服务器部署多台tomcat

    如题,多个项目部署在一台服务器.减少容错性,觉得分开部署,这样一个tomcat挂了不会影响另一个项目.看配置和应用大小决定数量,一般四五个没问题,也有单台服务器部署8个tomcat稳定运行的. 下面记 ...

  3. get请求utf-8解码

    package utils;import java.io.UnsupportedEncodingException;import java.net.URLDecoder; /*** <p> ...

  4. DELPHI XE MYSQL数据库操作类 MYSQLHELPER

    注: 无需odbc配置 {* * MySQL Helper v1.0 * 2015.6.19 * 说明: * 这是一个操作MySQL的类,该类必须和libmysql.dll,dbxmys.dll两个文 ...

  5. Nginx 504响应超时

    1.问题分析 nginx访问出现504 Gateway Time-out,一般是由于程序执行时间过长导致响应超时,例如程序需要执行90秒,而nginx最大响应等待时间为30秒,这样就会出现超时.    ...

  6. 【sqlalchemy】

    https://www.cnblogs.com/ccorz/p/5711955.html

  7. [ kvm ] 学习笔记 1:Linux 操作系统及虚拟化

    1. 前言 一台计算机是由一堆硬件设备组合而成,在硬件之上是操作系统,操作系统与计算机硬件密不可分,操作系统用来管理所有的硬件资源提供服务,各个硬件设备是通过 总线 进行连接起来的: 在操作系统之上, ...

  8. HDU 2089 不要62 数位DP模板题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 参考博客:https://www.cnblogs.com/HDUjackyan/p/914215 ...

  9. web端自动化——Selenium Grid原理

     利用Selenium Grid可以在不同的主机上建立主节点(hub)和分支节点(node),可以使主节点上的测试用例在不同的分支节点上运行.  对不同的节点来说,可以搭建不同的测试环境(操作系统.浏 ...

  10. unix系统简明教程 命令

    who                                 显示电脑用户信息 liu :0 Oct 6 13:17 (:0)liu pts/2 Oct 6 13:22 (:0) who a ...