zoukankan      html  css  js  c++  java
  • axios 请求封装

    请求

    请求调用

    request.js

    import { Spin } from "ant-design-vue"
    import axios from "axios";
    
    import { getToken } from "../utils/settoken";
    import { message } from "ant-design-vue";
    import router from '../router/index'
    
    const ConfieBaseUrl = 'https://weiweixiao.cn/';
    // const ConfieBaseUrl   = 'https://dev-weiweixiao.com/';
    
    const Service = axios.create({
      baseURL:ConfieBaseUrl,
      timeout:60000,
      responseType:'json',
      withCredentials:true,
    });
    
    const commonHeaders  = (token) =>{
      const headers = {
        "Content-Type": "application/json;charset=UTF-8",
        Authorization:token || null
      }
      return headers
    }
    
    Service.interceptors.request.use(config =>{
      Spin.setDefaultIndicator({});
    return config
      
    },error => Promise.reject(error)
    );
    
    Service.interceptors.response.use(respones=>{
      Spin.setDefaultIndicator({
        spinning:false
      })
      if (respones.status==403){
        router.push("/login");
      }
      return respones
    },error => Promise.reject(error));
    
    
    async function request(method='get',path='',params = null) {
    
      const token = await getToken('token')
      const requestConfig = {
        method,
        url: path
      }
      // ?timespan=1600645954067&page=1&limit=10
      if (params) {
        if (method === 'get') {
    
          requestConfig.url = `${path}${params}`
          console.log(requestConfig.url)
    
        }else if(method === 'delete'){
          requestConfig.url = `${path}${params}`
    
        }else if(method === 'patch'){
          requestConfig.url = `${path}${params.id}`
          requestConfig.data = params
          console.log(requestConfig.url,requestConfig.data)
        }
        else{
          requestConfig.data = params
          // console.log(params)
        }
      }
      requestConfig.headers = {
        ...commonHeaders(token)
      }
      return Service(requestConfig).then((response) => {
        const body = response.data
        if (Number(body.status) === Number('1000')) {
    
          return {response: body}
        }
        return {response: body}
      })
        .catch(error => {
          if (error instanceof Error) {
            return "网络错误"
          } else {
            message.error('未知错误',2)
          }
          return false
        })
    }
    
    export default request

    参考: https://www.runoob.com/vue2/vuejs-ajax-axios.html

    简单点就是 

    创建实例的方法进配置

    const Service = axios.create({
    baseURL:ConfieBaseUrl,
    timeout:60000
    });

    axios API传递继续配置

    继续在实例里面传递配置

    Service(

    { method: 'post', url: '/user/12345', data: { firstName: 'Fred', lastName: 'Flintstone' }

    )

  • 相关阅读:
    [PKUSC2018]星际穿越——可持久化线段树+DP
    BZOJ2863[SHOI2012]魔法树——树链剖分+线段树
    BZOJ1758[Wc2010]重建计划——分数规划+长链剖分+线段树+二分答案+树形DP
    BZOJ4543[POI2014]Hotel加强版——长链剖分+树形DP
    树链剖分讲解及总结(重链剖分+长链剖分)
    Dubbo(3)--dubbo的源码分析
    Dubbo(1)--初识Dubbo
    zookeeper(5)--基于watcher原理实现带注册中心的RPC框架
    模板方法模式
    单例模式
  • 原文地址:https://www.cnblogs.com/kaibindirver/p/15396789.html
Copyright © 2011-2022 走看看