For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
预约演示登录免费开始
  • 概览
    • 什么是 API 定义?
    • 项目结构
Checking status...
SOC2Soc 2 Type II
© 2026 Fern • Birch Solutions, Inc., a Postman company

Documentation

SDKsDocsAsk FernCLI Reference

API Definitions

OpenAPIAsyncAPIOpenRPCgRPC

Resources

BlogSupportPricing

Company

Brand KitPrivacy PolicyTerms of Service
LogoLogo
预约演示登录免费开始
在本页
  • 目录结构
  • 核心配置文件
  • fern.config.json
  • generators.yml
  • API 定义文件
  • 在何处存储您的 API 定义
  • 多个 API
  • 为每个 API 生成独立的 SDK
  • 从多个 API 合并 SDK
概览

项目结构

||以 Markdown 格式查看|
此页面是否有帮助?
在仪表板中编辑
上一个

什么是 API 定义?

下一个

什么是 OpenAPI 规范?

配置 fern 从 fern 文件夹开始,该文件夹包含您的 API 定义、SDK 生成器和 CLI 版本。

Fern 推荐使用多仓库结构,将您的 fern 文件夹放在源代码仓库中(包含您的 API 定义和生成配置),并将每个生成的 SDK 放在各自独立的仓库中。

目录结构

当您运行 fern init --spec-type path/to/spec 时,您的 fern 文件夹将使用以下文件进行初始化:

fern
fern.config.json# 整个 Fern 项目的根级配置
generators.yml# 声明 API 并配置 SDK 生成
spec-folder# definition, openapi, asyncapi, etc.
spec-file.yml# API 定义文件

核心配置文件

除了核心文件外,您还可以选择使用覆盖层 (OpenAPI) 或重写文件来自定义您的 API 定义,而无需修改原始规范。

fern.config.json

fern.config.json 文件存储您的组织名称和 Fern CLI 版本。固定版本可提供确定性构建。

fern.config.json
1{
2 "organization": "plant-catalog",
3 "version": "5.12.0"
4}

使用本地安装的 CLI 时,将 version 设置为 "*"。有关详细信息,请参阅本地安装 Fern CLI。

generators.yml

generators.yml 文件声明您的 API 规范位置。这还启用了API 参考文档。

generators.yml
1api:
2 specs:
3 - openapi: ./openapi/openapi.yml

对于 SDK 生成,需要 generators.yml 文件。添加 groups 部分来配置要生成哪些 SDK。有关详细信息,请参阅 SDK 项目结构。

API 定义文件

对于 OpenAPI、AsyncAPI、OpenRPC 和 gRPC,您将有一个自包含的规范文件。

在何处存储您的 API 定义

管理 API 定义有三种常见方式:

  • 直接提交到您的 Fern 仓库(推荐)。 将您的 API 定义文件检入包含 Fern 配置的同一仓库。如果您不在其他地方维护定义,这是最简单的方法。
  • 从源代码仓库同步。 将您的 API 定义存储在与 API 源代码相同的仓库中,并将更新同步到您的 Fern 仓库。您可以使用 fern api update CLI 命令或 sync-openapi GitHub Action 来自动化此过程。
  • 在公共 URL 托管。 从可公开访问的端点提供定义,并在 generators.yml 中配置 origin 字段,以便 Fern 可以获取它。当您希望有一个多个消费者可以引用的单一权威定义时,这很有用。

多个 API

Fern 支持处理多个 API 定义的两种方法。两种方法都需要一个 apis 文件夹——此文件夹必须使用确切的名称。

  1. 为每个 API 生成独立的 SDK - 每个 API 生成自己独立的 SDK 包集合(例如,@company/user-api、@company/payments-api 或版本化的如 @company/sdk-v1、@company/sdk-v2)
  2. 从多个 API 合并 SDK - 多个 API 合并到单个 SDK 包中,可选择命名空间(例如,client.users、client.payments 或版本化的如 client.v1、client.v2)

为每个 API 生成独立的 SDK

当每个 API 应该生成自己独立的 SDK 集合时使用此方法。这适用于不同的 API(例如,user-api 和 payments-api)和版本化 API,其中您希望每个版本都可以独立安装(例如,@company/sdk-v1、@company/sdk-v2)。

1

将每个 API 放在自己的目录中

将每个 API 或 API 版本放入 fern/apis/ 的独立子文件夹中:

多个不同的 API
多个版本化 API
fern
fern.config.json
apis
user-api
generators.yml# 配置 user-api SDK
openapi.yml
payments-api
generators.yml# 配置 payments-api SDK
openapi.yml
2

为每个 API 配置 generators.yml

每个 API 目录包含自己的 generators.yml 文件,该文件引用同一文件夹中的规范:

generators.yml
1api:
2 specs:
3 - openapi: openapi.yml # 同一文件夹中的规范文件
4groups:
5 # SDK 生成器配置

从多个 API 合并 SDK

Enterprise 功能

此功能仅适用于 Enterprise 计划。要开始使用,请联系 support@buildwithfern.com。

当您希望将多个 API 合并到单个 SDK 包中,并可选择使用命名空间来组织它们时,请使用此方法。这适用于不同的 API 和版本化 API,但会增加包大小,因为所有 API 都打包在一起。

对于版本化 API,命名空间让您可以在同一包中访问不同版本,如 client.v1 和 client.v2。

1

将每个 API 放在独立的子文件夹中

将每个 API 放入 fern/apis/ 的独立子文件夹中:

多个不同的 API
多个版本化 API
fern
fern.config.json
generators.yml# 合并 SDK 的单一配置
apis
user-api
payments-api
2

在单个 generators.yml 中列出所有 API

在单个 generators.yml 中列出所有 API:

generators.yml
1api:
2 specs:
3 - openapi: user-api/openapi.yml
4 - openapi: payments-api/openapi.yml
5groups:
6 # SDK 生成器配置
3

添加命名空间(可选)

添加 namespace 来处理 API 之间重叠的架构名称或组织不同的 API 版本:

不同的 API
版本化 API
generators.yml
1api:
2 specs:
3 - openapi: apis/user-api/openapi.yml
4 - namespace: payments
5 openapi: apis/payments-api/openapi.yml
6groups:
7 # SDK 生成器配置