SuperAPI AI 工具集

data-client-rest

编程与开发

查看项目

更新于 10-16 02:30

技能介绍

用途:@data-client/rest 用于在 React/TypeScript 应用中定义、获取、规范化并更新 RESTful 资源与实体,提供类型安全与自动缓存管理。生成涉及远程 API 的代码时应遵循其模式。

主要能力:

  1. Schema 定义:用 schema 定义并规范化数据模型,实现类型安全与自动缓存;可变数据定义应套用 data-client-schema 模式。
  2. 资源(resource()):创建针对同一对象的 CRUD 端点集合。必填 path(path-to-regexp 模板,带类型)与 schema(单条数据形状,通常为 Entity 或 Union)。可选 urlPrefix(主机根)、searchParams(TS 泛型查询参数)、paginationField(为 getList 增加 getPage)、optimistic(为 true 时所有变更乐观更新)、body(push/unshift/update/partialUpdate 的 body 类型)。
  3. 自定义 RestEndpoint:独立端点可自定义类型,如 getTicker 带 urlPrefix、path、schema、pollFrequency。类型提示:path 为第一参数模板;method 非 GET 时第二参数为 body(除非 body: undefined);searchParams/body 仅用于类型推断;继承 RestEndpoint 时用 RestGenerics。生命周期:fetchResponse() → parseResponse() → process();url(urlParams) 拼接 urlPrefix + path + 查询串;getRequestInit(body) 处理 headers、method、signal。可用 getOptimisticResponse()。
  4. 扩展资源:用 .extend() 增加或覆盖端点,如 IssueResource 添加 search 端点。

使用方式:渲染用 useSuspense(TodoResource.get, {id})、useSuspense(TodoResource.getList)、带查询参数版本;变更用 useController().fetch,如 update、partialUpdate、getList.unshift、getList.push、getList.move、delete、getList.getPage。细节用法可套用 data-client-react 或 data-client-vue。

适用场景:React/TypeScript 中访问 REST API、CRUD 数据流、分页、乐观更新、文件下载(非 JSON 响应参考 network-transform)、认证、缓存失效、错误重试等,见参考目录与指南。

限制与注意:每个 resource/entity/collection 都应设置 schema 以支持规范化;仅定义单个端点或无变更端点时优先用 RestEndpoint 而非 resource()。定价、支持平台等资料暂未提供。