servers 为 API 指定一个或多个目标服务器,即 API 调用的基本 URL。端点路径(例如/users/{id})是相对于这些服务器定义的。一些 API 有一个目标服务器;其他人可能会提供多个服务器,例如沙盒与生产或不同地理区域的区域服务器(例如:AWS)。
默认情况下,OpenAPI 定义中的所有操作都使用全局定义的servers,但servers 也可能会被特定路径和操作覆盖。这对于某些操作使用与其余操作不同的服务器的 API 很有用。这样您就可以在单个 API 定义中记录所有操作,而不是将其拆分为多个定义,每个服务器一个。
示例: Dropbox API
- 大多数端点位于
api.dropboxapi.com 域上。
- 内容上传/下载端点位于
content.dropboxapi.com。
- Longpoll 端点位于
notify.dropboxapi.com。
- OAuth 端点位于
www.dropbox.com。
Dropbox API 定义可能如下所示:
openapi: 3.0.0
info:
title: Dropbox API
version: 1.0.0
servers:
- url: 'https://api.dropboxapi.com/2'
paths:
# These endpoints are on api.dropboxapi.com (use global `servers`)
/file_requests/list:
...
/users/get_account:
...
/files/upload:
# File upload/download uses another target server
servers:
- url: 'https://content.dropboxapi.com/2'
...
/files/list_folder/longpoll:
# Longpolling uses another target server
servers:
- url: 'https://notify.dropboxapi.com/2'
...
查看API Host and Base Path 指南了解更多详细信息和示例。