Auc的个人博客

vuePress-theme-reco Auc    2020 - 2021
Auc的个人博客 Auc的个人博客

选择一个主题吧~

  • 暗黑
  • 自动
  • 明亮
主页
分类
  • JavaScript
  • Vue
  • 数据结构与算法
  • 文档
  • 面试题
  • 笔记
标签
笔记
  • CSS
  • ES6
  • JavaScript
  • Vue
  • C语言
文档
  • Vueのapi
  • Vue Router
  • axios
  • Vue CLI
面试
  • JS
  • Vue
  • 基础
时间线
联系我
  • GitHub (opens new window)
author-avatar

Auc

62

文章

11

标签

主页
分类
  • JavaScript
  • Vue
  • 数据结构与算法
  • 文档
  • 面试题
  • 笔记
标签
笔记
  • CSS
  • ES6
  • JavaScript
  • Vue
  • C语言
文档
  • Vueのapi
  • Vue Router
  • axios
  • Vue CLI
面试
  • JS
  • Vue
  • 基础
时间线
联系我
  • GitHub (opens new window)
  • axios

    • axios初识
    • 实例与请求拦截器

实例与请求拦截器

vuePress-theme-reco Auc    2020 - 2021

实例与请求拦截器

Auc 2019-05-10 VueVue插件

# axios实例

# 创建实例

创建 axios 实例:axios.create()

const http = axios.create({
  // 基准地址
  baseURL: 'https://some-domain.com/api/',
  timeout: 1000,
  headers: {'X-Custom-Header': 'foobar'}
});
1
2
3
4
5
6

# 请求配置

  • url 是用于请求的服务器 URL:url: '/user',
  • method 是创建请求时使用的方法:method: 'get'
  • params 与请求一起发送的 URL 参数,如查询参数等。params: { ID: 12345 }
  • data 作为请求主体被发送的数据,只适用于这些请求方法post、patch、put。data: { firstName: 'Fred' },
  • baseURL 基准地址,将自动加在 url 前面,在请求前缀都相同的情况下,使用此选项,避免重复写前缀。除非 url 是一个绝对 URL。baseURL: 'https://some-domain.com/api/'
  • headers 是即将被发送的自定义请求头,比如在请求头加上token。 headers: { Authorization: 'Bearer sifskfjsdfjiewo' }

# 请求拦截器

在请求或响应被 then 或 catch 处理前拦截它们。也就是在所有的请求发出去之前都将经过请求拦截器,并在内部对所有的请求做出统一处理,之后再发出。 官方文档 - axios拦截器 (opens new window)

// 不用记,直接官方文档copy
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });
1
2
3
4
5
6
7
8
9

应用 对请求统一设置token:

  1. 原因:访问网站的很多部分,都需要在请求中携带token才有权限访问。那统一在拦截器中设置token就省了一个一个的加上。
  2. 使用
  • 用户登录后,我们设置token存到 localstorage 和 vux 中。
http.interceptors.request.use(function (config) {
  // 在请求发送出去之前,  统一携带token
  const userInfo = getUser()
  // 判断是否有 token, 如果有, 就携带上
  if (userInfo.token) {
    config.headers.Authorization = `Bearer ${userInfo.token}`
  }
  return config
}, function (error) {
  return Promise.reject(error)
})
1
2
3
4
5
6
7
8
9
10
11