需求

一般默认状态码200~300为正确的请求,新增一个自定义合法状态码的配置。

  1. // validate status
  2. axios.get('/more/304').then(res => {
  3. console.log(res)
  4. }).catch(err => {
  5. console.error(err)
  6. })
  7. axios.get('/more/304', {
  8. validateStatus(status) {
  9. return 200 <= status && status < 400
  10. }
  11. }).then(res => {
  12. console.log(res)
  13. }).catch(err => {
  14. console.error(err)
  15. })

代码实现

类型声明


export interface AxiosRequestConfig {
  // ...
  validateStatus?: (status: number) => boolean
}

添加默认检验配置

const defaultConfig: AxiosRequestConfig = {
  // ...
  validateStatus: function (status) {
    return status >= 200 && status < 300
  }
}

修改状态码判断处理逻辑

   function handleResponse(response: AxiosResponse) {
      if (!validateStatus || validateStatus(response.status)) {
        resolve(response)
      } else {
        reject(
          createError(
            `request failed with status ${response.status}`,
            config,
            null,
            request,
            response
          )
        )
      }
    }