2.0.0-alpha.2 • Published 4 years ago
@yzfe/request v2.0.0-alpha.2
伊智通用请求模块
一般是用来配合 @yzfe/openapi-generator 使用的
开发
yarn dev
yarn build使用
import { request, setErrorHandler, createRequest, setNotification } from '@yzfe/request'
// get, post...
request.get('url', {params: 'get 参数', body: 'post 数据'}, {hideError: false, ...otherAxoisOptions})
// 使用新的 baseUrl 创建新的 request 对象
let newRequest = createRequst('newHost')
// 设置错误提示函数
setNotification((msg: string) => {
    ElementUI.Notification.error(msg)
})
// 如果你需要自己处理错误逻辑,你可以设置新的错误处理函数
setErrorHandler((err: AxiosError) => {
    // 错误逻辑
})推荐拦截器(例子)
一般都需要设置以下两种拦截器,这些拦截器都是针对具体项目设置
request 拦截器,配置请求
import { request } from '@yzfe/request'
request.ax.interceptors.request.use(async options => {
    // 设置 api base url
    options.baseUrl = 'https://www.api.com/'
    // 设置 auth 数据
    let { token, zoneId, salonId } = await getHeaderData()
    options.headers['token'] = `${token}`
    options.headers['zoneId'] = `${zoneId}`
    options.headers['salonId'] = `${salonId}`
    return options
})response 拦截器,配置接口返回处理
import { request } from '@yzfe/request'
let _isExpired = false
request.ax.interceptors.response.use(
    res => {
        let data = res.data
        if (data) {
            let code = data.code || 0
            if (data instanceof Blob) {
                return res
            }
            if (code === 200 || code === 204) {
                return data
            } else if (code === 403 || code === 401) {
                // token 过期处理函数
                expiredCallback()
                throw new APIError('请登录', res)
            } else {
                let msg = '未知错误'
                if (res.data && res.data.msg) {
                    msg = res.data.msg
                }
                throw new APIError(msg, res)
            }
        } else {
            throw new HttpError('网络连接错误,请稍后再试', res)
        }
    },
    (err: AxiosError) => {
        if (err.response && err.response.status === 401) {
            if (!_isExpired) {
                _isExpired = true
                notification('登录过期,请重新登录')
                setTimeout(() => {
                    // 异常登录过期,登出后重新登录
                    expiredCallback()
                    _isExpired = false
                }, 4000)
            }
            throw new axios.Cancel('登录过期,请重新登录')
        } else {
            throw err
        }
    }
)2.0.0-alpha.2
4 years ago
2.0.0-alpha.1
4 years ago
2.0.0-alpha.0
5 years ago
1.0.1
5 years ago
1.0.0
5 years ago
0.0.2
6 years ago
0.0.1
6 years ago