zoukankan      html  css  js  c++  java
  • 基于axios二次封装一个具有请求/响应拦截的http请求

    1. axios的二次封装

     1 import axios from 'axios'
     2 import qs from 'qs'
     3 
     4 // 请求拦截
     5 axios.interceptors.request.use(config => {
     6   // 此处可以封装一些加载状态
     7   return config
     8 }, error => {
     9   return Promise.reject(error)
    10 })
    11 
    12 // 响应拦截
    13 axios.interceptors.response.use(response => {
    14   return response
    15 }, error => {
    16   return Promise.resolve(error.response)
    17 })
    18 
    19 function checkStatus (response) {
    20   // 此处可以封装一些加载状态
    21   // 如果http状态码正常,则直接返回数据
    22   if(response) {
    23     if (response.status === 200 || response.status === 304) {
    24       return response.data
    25       // 如果不需要除了data之外的数据,可以直接 return response.data
    26     } else if (response.status === 401) {
    27       location.href = '/login';
    28     } else {
    29       throw response.data
    30     }
    31   } else {
    32     throw {data:'网络错误'}
    33   }
    34 
    35 }
    36 
    37 // axios默认参数配置
    38 axios.defaults.baseURL = '/api/v0';
    39 axios.defaults.timeout = 10000;
    40 
    41 // restful API封装
    42 export default {
    43   post (url, data) {
    44     return axios({
    45       method: 'post',
    46       url,
    47       data: qs.stringify(data),
    48       headers: {
    49         'X-Requested-With': 'XMLHttpRequest',
    50         'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    51       }
    52     }).then(
    53       (res) => {
    54         return checkStatus(res)
    55       }
    56     )
    57   },
    58   get (url, params) {
    59     return axios({
    60       method: 'get',
    61       url,
    62       params, // get 请求时带的参数
    63       headers: {
    64         'X-Requested-With': 'XMLHttpRequest'
    65       }
    66     }).then(
    67       (res) => {
    68         return checkStatus(res)
    69       }
    70     )
    71   },
    72   del (url, params) {
    73     return axios({
    74       method: 'delete',
    75       url,
    76       params, // get 请求时带的参数
    77       headers: {
    78         'X-Requested-With': 'XMLHttpRequest'
    79       }
    80     }).then(
    81       (res) => {
    82         return checkStatus(res)
    83       }
    84     )
    85   }
    86 }
  • 相关阅读:
    幸存者偏差Survivorship Bias
    如何用一月6RMB搭建一个国外服务器
    因果性≠相关性
    三维组态可视化解决方案
    君子生非异也,善假于物也
    机器人制证系统大屏可视化
    C# WPF 嵌入网页版WebGL油田三维可视化监控
    OffscreenCanvas-离屏canvas使用说明
    去掉图片黑背景输出为透明背景
    高清屏下canvas重置尺寸引发的问题
  • 原文地址:https://www.cnblogs.com/stephensurry/p/14273502.html
Copyright © 2011-2022 走看看