环境配置

以 Markdown 格式查看

您可以指定服务器部署的环境。

单 URL 环境

api.yml
1name: api
2environments:
3 Production: https://www.yoursite.com
4 Staging:
5 docs: This staging environment is helpful for testing!
6 url: https://www.staging.yoursite.com

每个环境多个 URL

您可以为每个环境指定多个 URL。如果您有微服务架构,并且希望单个 SDK 与多个服务器交互,这将很有帮助。

api.yml
1environments:
2 Production:
3 urls:
4 Auth: https://auth.yoursite.com
5 Plants: https://plants.yoursite.com
6 Staging:
7 urls:
8 Auth: https://auth.staging.yoursite.com
9 Plants: https://plants.staging.yoursite.com

如果您选择使用此功能,必须为您定义的每个服务指定一个 url

auth.yml
1service:
2 url: Auth
3 base-path: /auth
4 ...

默认环境

您也可以提供默认环境:

api.yml
1name: api
2environments:
3 Production: https://www.yoursite.com
4 Staging:
5 docs: This staging environment is helpful for testing!
6 url: https://www.staging.yoursite.com
7default-environment: Production
通过提供默认环境,生成的 SDK 将设置为开箱即用地访问该 URL。

URL 模板

URL 模板目前仅支持 Python 和 Java SDK 生成。

对于跨多个区域或环境部署的 API,您可以定义带有变量占位符的 URL 模板,SDK 用户可以在运行时进行自定义。要设置此功能:

  1. urls 下定义您的静态基础 URL——这些会出现在生成的环境枚举中。
  2. 为每个服务添加带有 {variable} 占位符的 url-templates(例如,https://api.{region}.example.com/v1)。Fern 将这些作为 SDK 中的可配置参数公开。
  3. 提供 default-urls 作为具体的回退选项,这样 SDK 用户无需提供变量就能获得开箱即用的客户端。
  4. 为每个服务列出可用的 variables,每个变量都有一个 id、一个 default 值,以及一个可选的 values 列表来约束允许的选项。
api.yml
1environments:
2 RegionalApiServer:
3 urls:
4 Base: https://api.example.com/v1
5 Auth: https://auth.example.com
6 url-templates:
7 Base: https://api.{region}.{environment}.example.com/v1
8 Auth: https://auth.{region}.example.com
9 default-urls:
10 Base: https://api.example.com/v1
11 Auth: https://auth.example.com
12 variables:
13 Base:
14 - id: region
15 default: us-east-1
16 values:
17 - us-east-1
18 - us-west-2
19 - eu-west-1
20 - id: environment
21 default: prod
22 values:
23 - prod
24 - staging
25 - dev
26 Auth:
27 - id: region
28 default: us-east-1
29 values:
30 - us-east-1
31 - us-west-2
32 - eu-west-1
33default-environment: RegionalApiServer

基础路径

如果您希望所有端点都添加路径前缀,请使用 base-path

在下面的示例中,每个端点都添加了 /v1 前缀:

api.yml
1name: api
2base-path: /v1

受众

如果您有列出的环境需要过滤,可以利用受众功能。

api.yml
1audiences:
2 - public
3
4environments:
5 Dev:
6 url: https://api.dev.buildwithfern.com
7 Prod:
8 url: https://api.buildwithfern.com
9 audiences:
10 - external