@polyv/request-plugin-status-code
v2.8.1
Published
用途:对后端返回的 code 进行处理,并返回 Response 中的 data
Downloads
515
Readme
StatusCodeRequestPlugin
用途:对后端返回的 code 进行处理,并返回 Response 中的 data
实例化参数
| 参数名 | 用途 | 类型 | 默认值 |
| --------------- | ---------------- | -------------------- | ------ |
| successCode | 请求成功状态码 | number \| number[] | 200 |
| fields | 状态码字段配置 | StatusCodeFields | 见下文 |
| errorCallback | 请求失败回调函数 | function | - |
请求选项
| 参数名 | 用途 | 类型 | 默认值 |
| --------------- | ------------------ | -------------------- | ------ |
| useStatusCode | 是否使用状态码判断 | boolean | true |
| successCode | 成功状态码 | number \| number[] | - |
状态码字段配置
StatusCodeFields 类型如下:
| 参数名 | 用途 | 类型 | 默认值 |
| ---------------- | -------------------------- | -------- | ----------- |
| codeField | 状态码字段名 | string | 'code' |
| statusField | 状态字段名 | string | 'status' |
| messageField | 消息字段名 | string | 'message' |
| dataField | 数据字段名 | string | 'data' |
| errorField | 错误对象字段名 | string | 'error' |
| errorCodeField | 错误对象中的错误码字段名 | string | 'code' |
| errorDescField | 错误对象中的错误描述字段名 | string | 'desc' |
使用方式
import { PolyvRequest } from '@polyv/request-core';
import { StatusCodeRequestPlugin } from '@polyv/request-plugin-status-code';
// 基础用法
const requester = new PolyvRequest({
requestPlugins: [
new StatusCodeRequestPlugin(),
]
});
// 自定义成功状态码
const requester = new PolyvRequest({
requestPlugins: [
new StatusCodeRequestPlugin({
successCode: [200, 0],
}),
]
});
// 自定义字段名
const requester = new PolyvRequest({
requestPlugins: [
new StatusCodeRequestPlugin({
fields: {
codeField: 'errorCode',
dataField: 'result',
messageField: 'msg',
},
}),
]
});
// 添加错误处理回调
const requester = new PolyvRequest({
requestPlugins: [
new StatusCodeRequestPlugin({
errorCallback: (code, message) => {
console.error(`请求失败: ${code} - ${message}`);
},
}),
]
});
interface PeopleInfo {
name: string;
}
// 如果后端接口返回的 Response:{ code: 200, data: { name: string } }
const data = await requester.get<PeopleInfo>('/api/data', {});
// 此时无需做 code 判断,直接得到 data 的内容
console.log('名称', data.name);
// 如果你想在某个请求中不使用状态码判断
requester.get('/api/data', {}, {
useStatusCode: false,
});响应处理逻辑
- 插件会解析接口返回的数据,提取
code、status、message、data等字段 - 当满足以下条件之一时,请求被视为成功:
- 返回的
code值在成功状态码列表中 - 返回的
status值为'success'
- 返回的
- 成功时直接返回
data字段的内容 - 失败时抛出错误,错误信息包含:
code: 优先使用error.code字段,其次使用顶层code字段message: 优先使用error.desc字段,其次使用顶层message字段,都不存在则为'未知错误'
