Skip to content

RequestError ​

所有 API(request()、快捷方法、实例方法)失败时 reject 的统一错误结构,对标 AxiosError:code 错误码体系 + config / response 挂载 + 原生 errCode 不丢失。

uts
export type RequestError = {
	/** 库内错误码(字面量联合) */
	code: RequestErrorCode
	/** 固定主题,便于业务过滤 */
	errSubject: string
	/** 错误描述 */
	errMsg: string
	/** 原生 fail errCode 原值透传(5 / 600003 / …),库内错误为 null */
	nativeErrCode: number | null
	/** HTTP 状态码(BAD_REQUEST / BAD_RESPONSE 时) */
	statusCode: number | null
	/** 发起该请求的最终合并配置(axios error.config 对标) */
	config: RequestConfig | null
	/** HTTP 错误时携带响应原文(含 4xx/5xx body,axios error.response 对标) */
	response: ResponseAny | null
}

字段 ​

名称类型说明
codeRequestErrorCode库内错误码,确定性归类,业务分支判断的唯一依据
errSubjectstring固定 'unix-request'(入口常量 REQUEST_ERR_SUBJECT),便于业务过滤本库错误
errMsgstring错误描述。原生失败时透传原生 errMsg;取消时形如 请求已取消:页面卸载
nativeErrCodenumber | null原生 fail 的 errCode 原值透传不翻译(如超时 5、网络中断 600003);库内错误为 null
statusCodenumber | nullHTTP 状态码,仅 ERR_BAD_REQUEST / ERR_BAD_RESPONSE 时有值
configRequestConfig | null发起该请求的最终合并配置(发送快照),复现请求或埋点日志时使用
responseResponseAny | nullHTTP 错误时携带响应原文(含 4xx/5xx body),仅 ERR_BAD_REQUEST / ERR_BAD_RESPONSE 时有值

错误归类一览 ​

阶段归类nativeErrCodestatusCoderesponse
发送前参数校验(url 为空)ERR_PARAMnullnullnull
发送前配置校验(相对路径无 baseURL)ERR_CONFIGnullnullnull
取消(发送前已取消 / 飞行中 abort)ERR_CANCELEDnullnullnull
原生超时(errCode 5)ERR_TIMEOUT5nullnull
原生网络错误(600003 / 600010)ERR_NETWORK原值nullnull
HTTP 4xx(validateStatus 未通过)ERR_BAD_REQUESTnull4xx 值挂响应原文
HTTP 5xx(validateStatus 未通过)ERR_BAD_RESPONSEnull5xx 值挂响应原文
其余原生失败(1000 / 100001–100003 / 600008 / 600009 / 602001 等)与库内拦截器 / transform 异常ERR_NATIVE原值或 nullnullnull

errSubject 的第二个用途

拦截器 onRejected 的返回值判别也基于本契约:返回对象带 errSubject === 'unix-request' 视为 RequestError(换错),否则视为 ResponseResult(恢复)。业务换错时请沿用库内错误结构,见拦截器 API。

示例 ​

uts
import { request } from '@/uni_modules/ux-request'
import type { RequestError } from '@/uni_modules/ux-request'

request<UTSJSONObject>({ url: '/api/missing' }).catch((err) => {
	const e = err as RequestError
	console.log(e.errSubject)     // unix-request
	console.log(e.code)           // ERR_BAD_REQUEST
	console.log(e.statusCode)     // 404
	console.log(e.response?.data) // 服务端返回的错误 body
	console.log(e.config.url)     // 最终发送的完整 URL
})

相关 API ​

Released under the MIT License.