request
基础请求 (返回promise和task对象)。
需在入口文件初始化应用配置
setBaseToolsConfig({ pathLogin, log })
示例
ts
import { request } from '@base-web-kits/base-tools-uni';
import type { RequestData, RequestConfig } from '@base-web-kits/base-tools-uni';
// 封装项目的基础请求
export function requestApi<T>(config: RequestConfig) {
return request<T>({
header: { token: 'xx', version: 'xx', tid: 'xx' }, // 会自动过滤空值
// resMap: (res) => res, // 响应数据的转换, 如解密操作 (可选)
resKey: 'data',
msgKey: 'message',
codeKey: 'status',
successCode: [1],
reloginCode: [-10],
...config,
});
}
// 1. 基于上面 requestApi 的普通接口
export function apiGoodList(data: { page: number; size: number }) {
return requestApi<GoodItem[]>({ url: '/goods/list', data, resKey: 'data.list' });
}
const goodList = await apiGoodList({ page: 1, size: 10 });
// 2. 参数支持泛型
export function apiGoodList(config: RequestConfig<{ page: number; size: number }>) {
return requestApi<GoodItem[]>({ url: '/goods/list', resKey: 'data.list', ...config });
}
const goodList = await apiGoodList({ data: { page: 1, size: 10 } });
// 3. 基于上面 requestApi 的流式接口
export function apiChatStream(config: RequestConfig<ChatData>) {
return requestApi({
...config,
url: '/sse/chatStream',
resKey: false,
showLoading: false,
responseType: 'arraybuffer', // 流式响应类型
enableChunked: true, // 开启分块传输
});
}
// 发送的消息类型
type ChatData = { content: string; conversationId: number };
// 初始化请求对象
let chatTask: RequestTask;
const onTaskReady = (task: RequestTask) => {
chatTask = task;
};
// 流式监听
const onMessage = (msg: SSEMessage) => {
console.log(msg);
// 流式传输结束
// if (msg.type === 'DONE') { }
// 思考中
// if (msg.type === 'thinking') { }
// 各种消息类型
// if (msg.type === 'xx') { }
};
// 流式发起
const data = { content: '你好', conversationId: 123 };
apiChatStream({ data, onTaskReady, onMessage });
// 流式取消 (在组件销毁或页面关闭时调用)
chatTask?.abort();RequestConfig
RequestConfig 继承自 Omit<UniApp.RequestOptions, 'success' | 'fail' | 'complete'>,额外包含以下属性:
resKey: string | false- 接口返回响应数据的字段, 支持"a[0].b.c"的格式, 当配置false时返回完整的响应数据msgKey: string- 接口返回响应消息的字段, 支持"a[0].b.c"的格式codeKey: string- 接口返回响应状态码的字段, 支持"a[0].b.c"的格式successKey?: string- 接口返回成功状态码的字段, 支持"a[0].b.c"的格式 (默认取 codeKey)successCode: (number | string)[]- 成功状态码列表reloginCode: (number | string)[]- 登录过期状态码列表resMap?: (data: any) => any- 响应数据的转换, 如解密操作showLoading?: boolean- 是否显示进度条,默认truetoastError?: boolean- 是否提示接口异常,默认trueshowLog?: boolean- 是否输出日志,默认truecacheTime?: number- 缓存时间,默认0不缓存 (单位毫秒)extraLog?: Record<string, unknown>- 额外输出的日志数据
返回值
Promise<T> & { task?: UniApp.RequestTask }
版本
- 1.0.2 新增