zoukankan      html  css  js  c++  java
  • 封装属于自己的axios请求

    摘要

      axios是一个基于promise的HTTP库,可以用于浏览器中进行AJAX请求处理。在项目中,为了实现通用性,封装了一个axios请求。

    axios封装

    1、配置环境变量

    // 根据不同环境变量选择不同的接口服务器域名
    export const BASE_URL = process.env.REACT_APP_API;

    2、创建axios实例

      创建axios实例可以根据官方文档进行属于自己的配置,具体属性可以参考https://www.kancloud.cn/yunye/axios/234845

    // 创建axios实例
    const service = axios.create({
      baseURL: BASE_URL,
      headers: {
        'Content-Type': 'application/json;charset=UTF-8'
      },
      timeout: 5 * 1000 // 请求超时时间
    });

    3、创建request拦截器

      在请求、响应被then 或 catch 处理前拦截它们,在发送请求之前可以做些处理或者对请求错误做些什么处理。具体配置可以参考官网。

    // request拦截器
    service.interceptors.request.use(
      config => {
    // 登录时,Token登录 // const token = // localStorage.getItem('token') || sessionStorage.getItem('token'); // if (token) { // config.headers.Authorization = 'JWT ' + token; // } return config; }, error => { // Do something with request error console.log(error); // for debug return Promise.reject(error); } );

    4、创建response拦截器

    // response 拦截器
    service.interceptors.response.use(
      response => {
        const data = response.data;
        if (data.code === 2000) {
          return data.data;
        }
        if (data.code === 4040) {
          return Promise.reject({message: '网络中断'});
        }
        if (data.code === 4030) {
          return Promise.reject({message: '登录过期'});
        }
        return Promise.reject(data);
      },
      error => {
        error.message = '网络超时';
        return Promise.reject(error);
      }
    );
    
  • 相关阅读:
    第九章、硬件抽象层:HAL
    第八章、让开发板发出声音:蜂鸣器驱动
    第七章、LED将为我闪烁:控制发光二极管
    第六章、第一个Linux驱动程序:统计单词个数
    第五章、搭建S3C6410开发板的测试环境
    Android深度探索(卷1)HAL与驱动开发
    第三次月考
    第二次月考
    Android深度探索(卷1)HAL与驱动开发
    第六章 集合运算
  • 原文地址:https://www.cnblogs.com/BlueBerryCode/p/12882977.html
Copyright © 2011-2022 走看看