@ deadair/ sdk (英语)
一个死气站HTTP API的打字客户端. 这是从同一个合同产生的 车站 服务它的路线,所以一种方法, 它的参数和 它的形状是站自己的 而不是手拷贝 控制台是建立在它的上.
npm install @deadair/sdk
它只是一个ES模块, 它运行在任何地方 一个全球 fetch:节点20后,德诺,邦
和每个当前浏览器.
哪个版本
SDK与站台一同发布并搭载站台版本:SDK 0.6.0 是客户端
为站点 0.6.0。使用与您所交谈的电台匹配的版本。 在1.0之前,一个小步骤
而SDK则随它而改变.
开始
每个车站都是自办的,所以地址是你自己的. API服务于 /api 编辑
车站的一个已公布的端口,默认安装为 http://localhost:8080/api。 。 。 .
import { DeadairSdk } from '@deadair/sdk';
const sdk = new DeadairSdk({ baseUrl: 'http://localhost:8080/api' });
const now = await sdk.nowplaying.getNowPlaying();
console.log(now.onAir && now.track ? `${now.track.artist} - ${now.track.title}` : 'off air');
getNowPlaying 是一条不需要注册的路线 其余的,要一个密码的代号
同意并寄给每一个请求. headers 可能是一个函数,每个请求一次调用,所以一个符号
替换后不新建客户端
import { DeadairSdk } from '@deadair/sdk';
let token: string | undefined;
const sdk = new DeadairSdk({
baseUrl: 'http://localhost:8080/api',
headers: (): Record<string, string> => (token ? { Authorization: `Bearer ${token}` } : {}),
});
const answer = await sdk.authentication.requestToken({ grant_type: 'password', username: '[email protected]', password: '...' });
if (answer.result === 'mfa_required') {
throw new Error('this account has a second factor to verify before it gets a token');
}
token = answer.access_token;
const page = await sdk.history.readHistory({ limit: 5 });
for (const entry of page.entries) {
console.log(entry.airedAt.toRelative(), entry.artists, '-', entry.title);
}
每一个路线需要什么, 它的答案和它背后的许可在 API 参考,则由同一来源生成 合同并命名每条路线的方法.
日期和小数
约会时间到达现场 鲁克逊 DateTime 和小数
字段为 小数点.js Decimal从电线上复活
在方法返回之前。 两者都是这个包的依赖性,而鲁克逊的类型也随之而来.
导入 SDK 设置小数 。 Js's (英语) toExpNeg 财务报告和审定财务报表 toExpPos 他们的极限,所以 Decimal
打印为平方位数,绝不作符号标记。 该设置是全球的复制
小数点 J是SDK和你的密码 使用 Decimal.clone() 给自己的建筑师,如果
您依赖于默认值.
错误
400发或以上的响应 SdkError,带有 status,则 statusText,则
headers 编辑 body当它是JSON。 每个请求都带新鲜的
X-Request-ID 头曰. 过 requestIdFactory 来做身份证明.
自己捡
fetch 在选项中替换整个传输: SDK 递给它相对于 API 的路径
根和一个 RequestInit,并分析任意 Response 它回来了. createSdkFetch(options)
构建默认的, 这也是抛出 SdkError,因此包装可以添加周围的行为
它,例如每次请求的时间,或者在刷新符号后重试一次401:
import { createSdkFetch, DeadairSdk, type SdkFetch } from '@deadair/sdk';
const base = createSdkFetch({ baseUrl: 'http://localhost:8080/api' });
const withLogging: SdkFetch = async (url, init) => {
const started = Date.now();
try {
return await base(url, init);
} finally {
console.debug(init.method, url, `${Date.now() - started}ms`);
}
};
const sdk = new DeadairSdk({ baseUrl: 'http://localhost:8080/api', fetch: withLogging });
从何而来
所有东西都放在下面 src/ 由 ContractKit 从 .ck 合同
apps/api/data/contracts, (中文(简体) ),
它没有一个是手工编辑的。 客户变更是指合同变更. 一样
合同生成车站的路线, API 参考, a
OpenAPI 文档 对于任何其他语言, 和克特林,C#
和斯威夫特客户端 收听器应用程序是建立在.