1.0.1 • Published 3 years ago

@gurming/http-request v1.0.1

Weekly downloads
-
License
ISC
Repository
github
Last release
3 years ago

介绍

安装

npm install @gurming/http-request

基本用法

import httpRequest from '@gurming/http-request'

httpRequest.get('http/www.xxx.com/api/xxx', { params })

httpRequest.post('http/www.xxx.com/api/xxx', { data, params })

httpRequest.patch('http/www.xxx.com/api/xxx', { data, params })

httpRequest.put('http/www.xxx.com/api/xxx', { data, params })

httpRequest.delete('http/www.xxx.com/api/xxx', { data, params })

httpRequest.export('http/www.xxx.com/api/xxx', { params })

设置默认配置项

配置项和axios的defaults属性一致,可参考axios config defaults

httpRequest.setDefaults({
  baseURL: import.meta.env.VITE_APP_API as string | undefined,
  timeout: 10000,
})

拦截请求

httpRequest.setInterceptorsRequest(
  (config) => {
    // todo
    return config
  },
  (err) => {
    return Promise.reject(err)
  }
)

拦截响应

httpRequest.setInterceptorsResponse(
  (res) => {
    // todo
    if(res.status === 200){
      return Promise.resolve(data)
    } else {
      return Promise.reject(res.data)
    }
  },
  (err) => {
    // todo
    return Promise.reject(err)
  }
)

customParams

可以通过调用请求方法时传入customParams对象,来自定义接口返回的数据

httpRequest.post('http//www.xxx.com/api/xxx', { data, params }, customParams)

customParams默认有两个参数

errAlert:boolean 表示接口报错时是否弹窗提示
successAlert:boolean 表示接口成功时是否弹窗提示

如果是get/export请求,customParams默认值是

{ errAlert: true, successAlert: false }

其他请求方式的默认值是

{ errAlert: true, successAlert: true }

可以在拦截器里获取到customParams值

httpRequest.setInterceptorsResponse(
  (res) => {
    const { config: { customParams } } = res
    if(customParams.successAlert){
      alert('success alert')
    }
    // todo
  },
  (err) => {
    const { config: { customParams } } = err
    if(customParams.errAlert){
      alert('err alert')
    }
    // todo
  }
)

httpStatus

httpRequest提供了一些错误请求码的中文映射

const httpStatus: Record<number, string> = {
  400: '请求错误',
  401: '未授权,请登录',
  403: '拒绝访问',
  404: '请求地址出错',
  408: '请求超时',
  500: '服务器内部错误',
  501: '服务器未实现',
  502: '网关错误',
  503: '服务不可用',
  504: '网关超时',
  505: 'HTTP版本不受支持',
}

在拦截错误时可以用上

import httpRequest, { httpStatus } from '@gurming/http-request'

httpRequest.setInterceptorsResponse(
  (res) => {
    // todo
  },
  (err) => {
    if (err && err.request) {
      const status: number = err.request.status
      err.msg = httpStatus[status] || '网络发生错误'
      alert(err.msg)
    }
    // todo
  }
)
1.0.1

3 years ago

1.0.0

3 years ago