@arbeidstilsynet/收件者类型
Arbeidstilsynet 的脚本类型 接收器 API,从其 OpenAPI 规格 。 这个包裹船 仅类型 - 没有运行时间 代码 - 所以它不会增加你的捆绑.
用起来 openapi-fetch 改为
获得一个完全类型安全的 HTTP 客户端: 请求路径、 查询参数、 请求
这些机构和答复都与API现场合同核对.
安装
npm install @arbeidstilsynet/receiver-types openapi-fetch
# or
pnpm add @arbeidstilsynet/receiver-types openapi-fetch
包与接收器同时发布并使用接收器 版本,所以一个新版本意味着API合同可能已经改变.
出口的东西
生成的模块显示标准 openapi-typescript 形状 :
paths- 每一个端点,以 URL 键入,及其方法、参数和响应.components- 可再利用计划,根据components["schemas"]。 。 。 .operations- 操作按键operationId。 。 。 .
创建客户端
import createClient from "openapi-fetch";
import type { paths } from "@arbeidstilsynet/receiver-types";
export const client = createClient<paths>({
baseUrl: "/api/receiver",
});
退出计划类型
而不是你用的计谋 所以他们在你的代码中读得很好:
import type { components } from "@arbeidstilsynet/receiver-types";
export type Melding = components["schemas"]["Melding"];
export type ConsumerManifest = components["schemas"]["ConsumerManifest"];
export type GetAllMeldingerResponse =
components["schemas"]["GetAllMeldingerResponse"];
用法实例
这些镜像是如何在Arbeidstilsynet前端内消耗类型.
第一个请求
起码 meldinger 请求 - 获取首页 :
const { data, error } = await client.GET("/meldinger", {
params: {
query: {
pageNumber: 1,
pageSize: 20,
},
},
});
if (error) throw new Error(JSON.stringify(error));
console.log(data?.items);
已键入、 可重复使用的订阅功能
用户端点显示注册的接收用户:
import type { components } from "@arbeidstilsynet/receiver-types";
type ConsumerManifest = components["schemas"]["ConsumerManifest"];
export async function getSubscriptions(): Promise<ConsumerManifest[]> {
const { data, error } = await client.GET("/subscriptions");
if (error) {
throw new Error(`Failed to get subscriptions: ${JSON.stringify(error)}`);
}
if (!data) {
throw new Error("Failed to get subscriptions: empty response");
}
return data;
}
因为 ConsumerManifest 是生成类型, 您的编辑器自动完成每个类型
编译时可用的字段和标记无效的组合。 更改 API
合同(并更新此软件包)表面的断裂变化相同.
许可证
麻省理工学院. 见 自由主义 详细情况.