2.0.0
Skip to content

XRequest ​

XRequest(baseURL, options) 返回带 run、abort、manual 的实例。baseURL 必须是非空字符串。

交给 Provider 时 manual 必须为 true。回调写在 options.callbacks:onUpdate、onSuccess、onError。run(params) 把这次参数和 options.params 合并后发出去。

响应按 content-type 分流:text/event-stream 走 SSE,application/json 走 JSON。其它类型抛出不支持的 content-type。还可以传 timeout、streamTimeout、middlewares、transformStream 和自定义 fetch。

基础使用 ​

Request Log
Chunks0
Last
-
基础使用

按钮触发一次请求。fetch 被换成本地 SSE,页面不会访问外网。

自定义入参 ​

Request Log
-
自定义入参

在 params 里附带 agentId 等自定义字段,仍然走本地 mock。

自定义转换器 ​

自定义转换器

transformStream + NDJSON mock,把原始分片原样送进 onUpdate。

模型接入 ​

Model Request Log
idle
-
模型接入

手动模式 + 输入框,用 mock OpenAI SSE 模拟模型流式回复,可 Abort。

超时配置 ​

Request Log
request -
Status-
timeout2000ms (mock arrives at 3000ms)
超时配置

timeout: 2000,mock 在 3000ms 才返回,触发 TimeoutError。

API ​

XRequestFunction ​

ts
type XRequestFunction<Input = AnyObject, Output = SSEOutput> = (
  baseURL: string,
  options?: XRequestOptions<Input, Output>,
) => XRequestClass<Input, Output>;
属性说明类型默认值版本
baseURLAPI 地址string--
options请求配置XRequestOptions<Input, Output>--

XRequestOptions ​

属性说明类型默认值版本
callbacks请求回调XRequestCallbacks<Output>--
params请求参数Input--
headers额外请求头Record<string, string>--
timeout请求超时(毫秒)number--
streamTimeout流式数据超时(毫秒)number--
fetch自定义 fetch(baseURL, options) => Promise<Response>--
middlewares请求前后中间件XFetchMiddlewares<Input, Output>--
transformStream流处理器XStreamOptions<Output>['transformStream'] | ((baseURL: string, responseHeaders: Headers) => XStreamOptions<Output>['transformStream'])--
manual是否手动发请求;为 true 时需调用 runbooleanfalse-

XRequestCallbacks ​

属性说明类型默认值版本
onSuccess成功回调(chunks: Output[], responseHeaders: Headers) => void--
onError错误回调(error: Error) => void--
onUpdate分片更新回调(chunk: Output, responseHeaders: Headers) => void--

XRequestClass ​

属性说明类型默认值版本
abort取消请求() => void--
run手动执行请求(manual=true 时生效)(params?: Input) => void--
isRequesting是否正在请求boolean--
manual是否手动模式boolean--

setXRequestGlobalOptions ​

ts
type setXRequestGlobalOptions<Input, Output> = (
  options: XRequestGlobalOptions<Input, Output>,
) => void;

XRequestGlobalOptions ​

ts
type XRequestGlobalOptions<Input, Output> = Pick<
  XRequestOptions<Input, Output>,
  'headers' | 'timeout' | 'streamTimeout' | 'middlewares' | 'fetch' | 'transformStream' | 'manual'
>;

XFetchMiddlewares ​

ts
interface XFetchMiddlewares<Input, Output> {
  onRequest?: (
    ...args: [Parameters<typeof fetch>[0], XRequestOptions<Input, Output>]
  ) => Promise<[Parameters<typeof fetch>[0], XRequestOptions<Input, Output>]>;
  onResponse?: (response: Response) => Promise<Response>;
}

1.x 的 new XRequest({ baseURL, model, dangerouslyApiKey }).create 现在叫 XRequestLegacy,文档在 XRequest 请求。