axios-miniprogram/docs/pages/advanced/request-interceptor.md

2.1 KiB

title
请求拦截器

{{ $frontmatter.title }}

::: tip {{ $frontmatter.title }} 用于请求发送前拦截请求。

通常会用于转换请求配置,或实现一些自定义功能。 :::

添加请求拦截器

可以添加请求拦截器。

import axios from 'axios-miniprogram';

axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  },
);

也可以添加多个请求拦截器,后添加的会先执行。

import axios from 'axios-miniprogram';

// 先添加 后执行
axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  },
);

// 后添加 先执行
axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  },
);

移除请求拦截器

可以移除不再需要的请求拦截器。

import axios from 'axios-miniprogram';

const ejectId = axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  },
);

// 移除请求拦截器
axios.interceptors.request.eject(ejectId);

移除所有请求拦截器

可以移除所有请求拦截器。

import axios from 'axios-miniprogram';

axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  },
);

axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  },
);

// 移除所有请求拦截器
axios.interceptors.request.clear();