Skip to content

RequestConfig ​

request() 与实例 request(config) 的请求配置类型,对标 axios config。url 必填,其余字段全部可选。

uts
export type RequestConfig = {
	/** 请求路径;相对路径拼接 baseURL(实例默认 < 请求级覆盖),http(s) 开头原样使用 */
	url: string
	/** 请求方法;不传或 null 使用实例默认(GET) */
	method?: RequestMethod | null
	/** baseURL 请求级覆盖 */
	baseURL?: string | null
	/** 查询参数:与 url 既有 query 合并,库内统一编码拼接 */
	params?: UTSJSONObject | null
	/** 请求体;GET/HEAD 的 UTSJSONObject 自动并入 query */
	data?: any | null
	/** 请求 header;与实例默认 header 浅合并(请求级同名键覆盖) */
	header?: UTSJSONObject | null
	/** 超时毫秒;不传或 null 使用实例默认(60000) */
	timeout?: number | null
	/** 响应 dataType(json / 其他),透传原生 adapter */
	dataType?: string | null
	/** 响应数据类型,透传原生(ArrayBuffer 场景:app-android 4.51+ / app-ios 4.61+) */
	responseType?: string | null
	/** 以下原生能力参数全量透传,本库不抹平,各端生效性见官方文档 */
	enableQuic?: boolean | null
	sslVerify?: boolean | null
	withCredentials?: boolean | null
	firstIpv4?: boolean | null
	enableChunked?: boolean | null
	/** 状态码校验;不传或 null 使用实例默认(2xx) */
	validateStatus?: ((statusCode: number) => boolean) | null
	/** 取消令牌;不传或 null 表示不可取消 */
	cancelToken?: CancelToken | null
	/** 请求体变换;提供即替换内置行为(data 可空:GET/HEAD 归一化后恒为 null) */
	transformRequest?: ((data: any | null) => any) | null
	/** 响应体变换;提供即替换内置(内置为原样透传) */
	transformResponse?: ((data: any | null) => any) | null
	/** 逃生舱:拿到原生 RequestTask(chunked 监听等高级场景) */
	onTask?: ((task: RequestTask) => void) | null
}

「除 url 外全部可选」是刻意的空安全设计

uts-proxy 代理层会对必填字段生成非空强转,业务漏传即在原生端 NPE;只有可选字段才生成 null-safe 编码。因此本类型刻意只保留 url 一个必填字段,其余全部 ? + | null——实现层统一对可空值判空兜底(三级合并回退实例默认 → 内置默认)。业务侧无须为「缺字段」做任何防御。

字段 ​

名称类型默认值说明
urlstring—必填。相对路径拼接 baseURL(双侧斜杠容错),http(s) 开头原样使用
methodRequestMethod'GET'与入口常量 DEFAULT_METHOD 一致;RequestDefaults 不含 method,实例默认即内置默认
baseURLstring | null实例默认请求级覆盖全局 baseURL;无 baseURL 且 url 相对 → ERR_CONFIG
paramsUTSJSONObject | null—查询参数:与 url 既有 query 合并,库内确定性编码(键值 encodeURIComponent)
dataany | null—请求体;GET/HEAD 的 UTSJSONObject 自动并入 query 后不再透传原生
headerUTSJSONObject | null实例默认 header与实例默认 header 浅合并,请求级同名键覆盖
timeoutnumber | null实例默认(60000)入口常量 DEFAULT_TIMEOUT = 60000;请求级有值即覆盖
dataTypestring | null原生默认(json)json 时原生对返回数据做 JSON.parse,透传原生
responseTypestring | null—响应数据类型(ArrayBuffer 场景:app-android 4.51+ / app-ios 4.61+),透传原生
enableQuicboolean | null原生默认原生能力参数,全量透传不抹平,各端生效性见官方文档
sslVerifyboolean | null原生默认同上
withCredentialsboolean | null原生默认同上
firstIpv4boolean | null原生默认同上
enableChunkedboolean | null原生默认同上(配合 onTask 监听 chunk)
validateStatus((statusCode: number) => boolean) | null实例默认(2xx)请求级有值即整体覆盖;未通过时 4xx → ERR_BAD_REQUEST / 5xx → ERR_BAD_RESPONSE
cancelTokenCancelToken | nullnull传入即可取消,见 createCancelSource()
transformRequest((data: any | null) => any) | null内置行为提供即替换内置(内置 = data 为 UTSJSONObject 且未显式设置 content-type 时补设 application/json)
transformResponse((data: any | null) => any) | null内置行为提供即替换内置(内置 = 原样透传)
onTask((task: RequestTask) => void) | null—逃生舱:拿到原生 RequestTask,不影响库内取消登记

合并层级 ​

请求级字段与实例默认按三级合并(内置默认 < 实例 defaults < 请求级 RequestConfig):标量字段(method / timeout)请求级有值即覆盖;header 浅合并;回调字段(validateStatus / transform / cancelToken)请求级有值即整体覆盖。详见请求配置。

transformRequest 与 GET/HEAD

GET/HEAD 的 data 在归一化阶段已并入 query,transformRequest 收到的 data 恒为 null(M4 Kotlin 空安全约束,签名参数可空)——自定义 transform 内需判空。

相关 API ​

Released under the MIT License.