阿里打字码
设置
1) 将生成器添加到您的 arri 配置
// arri.config.ts
import { defineConfig, generators } from 'arri';
export default defineConfig({
generators: [
generators.typescriptClient({
clientName: 'MyClient',
outputFile: './client/src/myClient.g.ts',
}),
],
});
选项 :
| 名称 | 说明 |
|---|---|
| 输出文件( 需要) | 由生成器创建的文件路径 |
| 客户端Name | 生成客户端的名称 |
| 类型 前缀 | 在生成的类型名称中添加前缀 |
| 根服务 | 设置生成客户端的根服务 |
| 更美的选项 | 生成代码的格式选项 |
| 转动器 | 覆盖用于创建程序的默认函数 |
2) 安装 TS 客户端库
确保将使用生成代码的项目安装了客户端库. 版本号应该符合您的 arri cli 版本 .
# npm
npm i @arrirpc/client
# pnpm
pnpm i --save @arrirpc/client
使用生成代码
初始化客户端
// This will match whatever you put in the arri config
import { MyClient } from './myClient.g';
const client = new MyClient({
// only required field
baseUrl: 'https://example.com',
// everything below is optional
headers: () => {
return {
Authorization: '<some-token>',
};
},
onError: (err) => {},
options: {
retry: 4,
retryDelay: 200,
retryStatusCodes: [400, 403, 500, 501],
onRequest: (ctx) => {},
onRequestError: (ctx) => {},
onResponse: (ctx) => {},
onResponseError: (ctx) => {},
signal: undefined, // abortcontroller signal
timeout: 200,
},
});
await client.myProcedure({ foo: 'foo' });
// individual procedures can also override the global request options
await client.myProcedure({ foo: 'foo' }, { timeout: 400 });
// be aware that these options are not merged with the global request options so you will have to
// re-specify every hook if you only want to change one thing
Root客户端将是一个包含单一类中所有服务和程序的类. 若您需要特殊服务。 您也可以进口服务.
例如,如果将一些程序分组如下: "users" 我们可以这样进口服务.
import { MyClientUsersService } from './myClient.g';
const usersService = new MyClientUsersService({
baseUrl: 'https://example.com',
headers: () => {
return {
Authorization: '<some-token>',
};
},
});
usersService.someProcedure();
导入和使用类型
所有生成的种类和序列器/分解器也可以从生成的代码中导入. 类型将匹配计划中给他们的ID 。 序列化和解析帮助器将使用前缀 $$
// import the user type and the user helper
import { type User, $$User } from './myClient.g';
const bob: User = {
// field
};
$$User.serialize(bob); // outputs valid JSON
$$User.parse('<some-json-string>'); // outputs a User
发展
大楼
运行 nx build ts-codegen 来建造图书馆.
运行单元测试
运行 nx test ts-codegen 通过 维特。 。 。 .