@ cratestack/ api (英语)
将伞相配合于分块 @cratestack/* 用于 CrateStack 生成类型脚本的 npm 家族
RPC 客户端 (transport rpc 计划。 如果你开始新鲜, 更喜欢根据个人
直接下方的软件包——安装较小,没有未使用的对等依赖. @cratestack/api 已存在
如此存在 import { createBatchLink } from "@cratestack/api" 代码不变.
分裂
| 软件包 | 它会做什么 |
|---|---|
@cratestack/ts-types | 共享 RpcLink/线框接口. 只有类型——没有运行时间代码. |
@cratestack/link-batch | 自动批量调度器 RpcLink。 。 。 . |
@cratestack/link-logger | 参考记录 RpcLink。 。 。 . |
@cratestack/runtime-fetch | typeof fetch 带有可选超时的运输. |
@cratestack/runtime-axios | typeof fetch 以轴心为支撑的运输. |
@cratestack/validator-zod | 输入验证 RpcLink佐德计划. |
@cratestack/validator-yup | 输入验证 RpcLink,yup 计划. |
@cratestack/adapter-tanstack-query | 通用 TanStack 查询选项构建器 . |
@cratestack/adapter-rtk | RTK 查询 BaseQueryFn 适配器. |
使用量
根导入自拆分前起没有变化 —— 它完全再出口 ts-types + 键
link-batch + 键 link-logger,因此从不将它导入到 zod/yup/axios/tanstack-query/rtk
隐含的同伴依赖性 :
import { createBatchLink, createLoggerLink } from "@cratestack/api";
import { CratestackRpcRuntime } from "./generated/runtime"; // your project's generated client
const runtime = new CratestackRpcRuntime("https://api.example.com", {
links: [createLoggerLink(), createBatchLink()],
});
const client = new MyGeneratedClient(runtime);
// These three calls, if issued in the same tick, become ONE /rpc/batch request:
const [a, b, c] = await Promise.all([
client.widgets.get(1),
client.widgets.get(2),
client.widgets.get(3),
]);
其它所有东西,因为拆分可以作为一个命名的子路径来使用——每一个都拉入它的 自己的同伴依赖,而不是每个软件包的:
import { createFetchRuntime } from "@cratestack/api/runtime-fetch";
import { createAxiosRuntime } from "@cratestack/api/runtime-axios";
import { createZodValidatorLink } from "@cratestack/api/validator-zod";
import { createYupValidatorLink } from "@cratestack/api/validator-yup";
import { rpcQueryOptions, rpcMutationOptions } from "@cratestack/api/adapter-tanstack-query";
import { createRpcBaseQuery } from "@cratestack/api/adapter-rtk";
请参看每个软件包本身的README(在上表中链接)来表示其完整的API和语义.
顺序事项:链接 next 重新运行其下方的所有内容( 真实的获取和已声明的链接)
在它之后,永远不要只是终端获取. stream() 呼叫完全绕过链条——一个链接
想要检查/重试一个响应 就需要克隆一个流体,它会击败流体.