费尔恩打字库
Fern Typescript 库提供从 JavaScript / TypeScript 访问 Fern的公开 API , 以及您选择的 JavaScript 运行时间( ) 节点,浏览器, Deno, Bun 等) (中文(简体) ).
文档
API 备有参考文件 这里。 。 。 .
这个SDK主要用来进入Fern's 动态片段 API (英语). Fern的动态片段API的用意是允许用户为其带有动态有效载荷的Fern-generate SDK创建代码片段.
常用案例包括:
- 应用代码示例
- 文档中针对用户的代码示例
- 这么多!
显著特征 :
- 客户端执行,对于经常变化的代码实例来说,理想,可能是因为用户输入浏览器.
- 动态代码示例
- 显示默认和自动生成的例子
安装
npm install --save @fern-api/sdk
# or
yarn add @fern-api/sdk
使用量
客户端执行
import { FernClient } from "@fern-api/sdk";
const fern = new FernClient({
token: "YOUR_API_KEY",
});
// Get the snippet template from the Fern API
const template = await fern.templates.get({
endpoint: {
method: "POST",
path: "/api/users/search/{someFilter}",
},
});
// Build a snippet with a payload, this happens on the client side,
// without need for another API call, improving latency dramatically.
const snippet1 = await template.resolve({
pathParameters: [{
name: "someFilter",
value: "test1"
}]
requestBody: {
name: "Joey",
}
})
// You can build as many snippets as you'd like!
const snippet2 = await template.resolve({
pathParameters: [{
name: "someFilter",
value: "anotherTest"
}]
requestBody: {
name: "Samantha",
}
})
动态代码示例
import { FernClient } from "@fern-api/sdk";
const fern = new FernClient({
token: "YOUR_API_KEY",
});
const snippets = await fern.snippets.get({
endpoint: {
method: "POST",
path: "/api/users/search/{someFilter}",
},
// The payload parameter allows you to pass in the same data you would to the API,
// the only distinction is that the payload is structure to distinguish path and query parameters,
// headers and request bodies.
payload: {
pathParameters: [{
name: "someFilter",
value: "test1"
}]
requestBody: {
name: "Joey",
}
}
});
默认或静态代码示例
import { FernClient } from "@fern-api/sdk";
const fern = new FernClient({
token: "YOUR_API_KEY",
});
// Without any payload specified, the SDK returns a snippet with the examples provided within your API spec
// If there are no examples in your spec, a basic example is autogenerated for you.
const snippets = await fern.snippets.get({
endpoint: {
method: "GET",
path: "/api/users",
},
// The name of your organization, found in your `fern.config.json`
orgId: "my_organization",
// The name of the API you'd like to generate snippets for,
apiId: "api",
sdks: [{ type: "python", package: "my_package", version: "0.0.3" }],
});
处理出错
API 返回非成功状态代码( 4xx 或 5xx 回复) 时, 子类 费尔恩厄尔 将扔出 :
import { FernError } from "@fern-api/sdk";
try {
await fern.snippets.get(...);
} catch (err) {
if (err instanceof FernError) {
console.log(err.statusCode);
console.log(err.message);
console.log(err.body);
}
}
请求选项
HTTP 客户端接受一个 RequestOptions 分类
定制超时.
const snippets = await fern.snippets.get(
{
endpoint: {
method: "GET",
path: "/api/users",
},
},
{
timeoutInSeconds: 60, // increase timeout in second
}
);
运行时间兼容性
SDK 默认为 node-fetch 但是如果存在, 将会使用全局获取客户端 。 SDK这个
工作时间如下:
支持以下运行时间:
- 节点.js 15+
- 维塞尔
- 云花岗工人
- 德诺v1.25+
- 1.0+号舱
Beta 状态
这个SDK是在β中,在版本之间可能会有断裂的更改,而没有主要的版本更新. 因此,我们 建议将软件包版本刻入您的软件包.json文件中的特定版本。 这样,你可以安装 除非您有意寻找最新版本,否则每次不中断更改.
捐款
虽然我们重视对SDK的开源贡献,但这个库是程序生成的. 直接加进这个图书馆 就得转到我们这代的密码上 否则 他们将被覆盖 在下一个生成的释放。 随便开个公关作为概念的证明, 但要知道,我们无法把它合并起来。 我们建议先讨论一个问题!
另一方面,对 " README " 的贡献总是非常受欢迎的!