> This page is for SDK, version Current (default).
> For other versions, use one of these documentation indexes:
> - Current (default): https://buildwithfern.com/learn/sdks/current/llms.txt
> - Legacy: https://buildwithfern.com/learn/sdks/legacy/llms.txt

> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

# SDK 用户功能

> 了解 Fern 生成的客户端库中的 SDK 用户功能，包括安装、错误处理、webhook 验证和自定义选项。

Fern 生成的 SDK 在所有语言中提供一致的功能集，帮助开发者与您的 API 交互。使用信息会自动生成到您 SDK 的 `README.md` 中，[您可以对其进行自定义](./readme)。

要查看生成的 SDK README 的完整示例，请参见 [Intercom 的 Python SDK](https://github.com/intercom/python-intercom/blob/3aac991a92cefe34cf437f8f5ca46c97c04c1a6c/README.md)。

## 安装和基本使用

用户使用标准包管理器（TypeScript 用 npm、Python 用 pip、Java 用 Maven/Gradle 等）从特定语言的注册表安装 SDK。

用户使用您 API 的基础 URL 和任何必需的身份验证来初始化客户端，然后调用客户端上的方法与您的 API 交互。生成的 SDK 支持各种语言的现代运行时。

## 参考文档

`README.md` 文件链接到自动生成的 `reference.md` 文件
（[示例](https://github.com/intercom/python-intercom/blob/HEAD/reference.md)），
该文件列出了按资源组织的所有可用 API 方法，包括带有参数类型的方法签名、使用示例，以及每个端点的请求/响应结构。

## IDE 支持和 IntelliSense

Fern 生成的 SDK 包含完整的类型定义，支持丰富的 IDE 功能。当开发者在 VS Code 等编辑器中使用您的 SDK 时，他们可以获得自动完成、内联文档和类型信息。

内联文档来源于您的 API 定义。在 SDK 生成过程中，Fern 将您的参数描述、返回类型和代码示例直接作为文档字符串（Python）、JSDoc（TypeScript）、Javadoc（Java）等嵌入到代码中。

## 错误处理

当 API 返回 4xx 或 5xx 状态码时，SDK 会抛出一个包含状态码、错误消息、响应体和原始响应对象的错误。

## Webhook 签名验证

当您在 API 规范中定义 webhook 时，Fern 会自动[生成工具，允许您的用户验证 webhook 签名](./webhook-signature-verification)并确保事件来源于您的 API。

## 默认参数值

您可以为路径、头部和查询参数配置[默认值](/learn/zh/api-definitions/openapi/extensions/default-values)，包括在 [`x-fern-global-headers`](/learn/zh/api-definitions/openapi/extensions/global-headers) 下定义的头部。SDK 会使这些参数变为可选，并在调用者未提供时发送默认值——这对于固定 API 版本头部或默认区域等场景很有用。

## 自定义选项

您的 SDK 用户可以使用特定语言的选项来配置单个请求：

| 选项                                                             | 描述                                                                                                                   | 可用性                                |
| -------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
| 超时                                                             | 配置请求超时（默认：[C#](/learn/zh/sdks/generators/csharp/configuration#default-timeout-in-seconds) 和 PHP 为 30 秒，其他所有语言为 60 秒） | 所有语言                               |
| [重试](/learn/zh/sdks/deep-dives/retries-with-backoff)           | 配置最大重试次数（默认：对 408、429 和 5xx 响应进行 2 次指数退避重试）                                                                          | 除 Ruby 和 Swift 外的所有语言              |
| 自定义 HTTP 客户端                                                   | 覆盖默认 HTTP 客户端以支持不支持的环境或自定义需求                                                                                         | TypeScript、Python、Java、PHP 和 Swift |
| [aiohttp 传输](/learn/zh/sdks/generators/python/aiohttp-support) | 选择使用 `aiohttp` 作为异步 HTTP 传输以解决 DNS 并发瓶颈                                                                              | 仅 Python                           |
| 自定义头部                                                          | 在任何请求中发送额外的头部                                                                                                        | TypeScript、Java 和 Swift            |
| 原始响应数据                                                         | 访问响应头部和解析后的数据                                                                                                        | TypeScript、Python 和 Go             |
| 查询参数                                                           | 添加额外的查询字符串参数                                                                                                         | TypeScript 和 Swift                 |
| 中止信号                                                           | 取消进行中的请求                                                                                                             | 仅 TypeScript                       |