API サーバとベースパス
すべてのAPIエンドポイントはベースURLを基準とします。たとえば、ベースURLがhttps://api.example.com/v1
である場合、/users
エンドポイントはhttps://api.example.com/v1/users
を指します。
1https://api.example.com/v1/users?role=admin&status=active2\________________________/\____/ \______________________/3server URL endpoint query parameters4path
OpenAPI 3.0では、servers
配列を使用して、APIの1つ以上のベースURLを指定します。servers
は、OpenAPI 2.0で使用されていたhost
、basePath
、およびschemes
キーワードを置き換えます。各サーバーにはurl
と、オプションのMarkdown形式のdescription
があります。
1servers:2 - url: https://api.example.com/v1 # The "url: " prefix is required
複数のサーバーを持つこともできます。たとえば、本番環境とサンドボックス環境などです。
1servers:2 - url: https://api.example.com/v13 description: Production server (uses live data)4 - url: https://sandbox-api.example.com:8443/v15 description: Sandbox server (uses test data)
サーバーURL形式
サーバーURLの形式はRFC 3986に準拠しており、通常は次のようになります。
1scheme://host[:port][/path]
ホストは名前またはIPアドレス(IPv4またはIPv6)にすることができます。OpenAPI 2.0のWebSocketスキームws://とwss://もOpenAPI 3.0でサポートされています。有効なサーバーURLの例:
1https://api.example.com2https://api.example.com:8443/v1/reports3https://:3025/v14http://10.0.81.36/v15ws://api.example.com/v16wss://api.example.com/v17/v1/reports8/9//api.example.com
サーバーURLが相対パスの場合、指定されたOpenAPI定義ファイルがホストされているサーバーに対して解決されます(詳細については以下を参照)。注:サーバーURLにはクエリ文字列パラメーターを含めることはできません。たとえば、これは無効です:
1https://api.example.com/v1?route=
servers
配列が指定されていないか空の場合、サーバーURLはデフォルトで/
になります。
1servers:2 - url: /
サーバーのテンプレート化
サーバーURLの任意の部分(スキーム、ホスト名またはその一部、ポート、サブパス)は、変数を使用してパラメーター化できます。変数はサーバーURL内で中括弧{}で示されます。例:
1servers:2 - url: https://{customerId}.saas-app.com:{port}/v23 variables:4 customerId:5 default: demo6 description: Customer ID assigned by the service provider7 port:8 enum:9 - '443'10 - '8443'11 default: '443'
パスパラメーターとは異なり、サーバー変数はschema
を使用しません。代わりに、文字列であると想定されます。変数は任意の値を保持できますが、enum
に制限することもできます。いずれの場合も、default
値が必須であり、クライアントが値を指定しない場合に使用されます。変数description
はオプションですが、あると便利で、リッチテキスト形式のMarkdown(CommonMark)をサポートします。サーバーのテンプレート化の一般的なユースケース:
- 複数のプロトコル(HTTPとHTTPSなど)を指定する。
- 各顧客が独自のサブドメインを持つSaaS(ホスト型)アプリケーション。
- 異なる地理的地域にある地域サーバー(例:Amazon Web Services)。
- SaaSおよびオンプレミスAPI用の単一API定義。
例
HTTPSとHTTP
1servers:2 - url: http://api.example.com3 - url: https://api.example.com
またはテンプレートを使用する
1servers:2 - url: '{protocol}://api.example.com'3 variables:4 protocol:5 enum:6 - http7 - https8 default: https
注:これら2つの例は意味的に異なります。2番目の例はHTTPSサーバーを明示的にdefault
として設定していますが、最初の例にはデフォルトサーバーがありません。
本番環境、開発環境、ステージング環境
1servers:2 - url: https://{environment}.example.com/v23 variables:4 environment:5 default: api # Production server6 enum:7 - api # Production server8 - api.dev # Development server9 - api.staging # Staging server
SaaSとオンプレミス
1servers:2 - url: "{server}/v1"3 variables:4 server:5 default: https://api.example.com # SaaS server
異なる地理的地域向けのリージョンエンドポイント
1servers:2 - url: https://{region}.api.cognitive.microsoft.com3 variables:4 region:5 default: westus6 enum:7 - westus8 - eastus29 - westcentralus10 - westeurope11 - southeastasia
サーバーの上書き
グローバルなservers
配列は、パスレベルまたは操作レベルで上書きできます。これは、一部のエンドポイントがAPIの他の部分とは異なるサーバーまたはベースパスを使用する場合に便利です。一般的な例としては、次のものがあります。
- ファイルのアップロードおよびダウンロード操作の異なるベースURL、
- 非推奨だがまだ機能しているエンドポイント。
1servers:2 - url: https://api.example.com/v13
4paths:5 /files:6 description: File upload and download operations7 servers:8 - url: https://files.example.com9 description: Override base path for all operations with the /files path10 ...11
12/ping:13 get:14 servers:15 - url: https://echo.example.com16 description: Override base path for the GET /ping operation
相対URL
servers
配列内のURLは、/v2
のように相対パスにすることができます。この場合、URLは指定されたOpenAPI定義をホストするサーバーに対して解決されます。これは、顧客自身のサーバーにホストされているオンプレミスインストールで役立ちます。たとえば、https://:3001/openapi.yaml
でホストされている定義がurl: /v2
を指定している場合、url
はhttps://:3001/v2
に解決されます。相対URL解決ルールはRFC 3986に準拠しています。さらに、API定義内のほとんどすべての他のURL(OAuth 2フローエンドポイント、termsOfService
、外部ドキュメントURLなど)は、サーバーURLに対して相対的に指定できます。
1servers:2 - url: https://api.example.com3 - url: https://sandbox-api.example.com4
5# Relative URL to Terms of Service6info:7 version: 0.0.08 title: test9 termsOfService: /terms-of-use10
11# Relative URL to external documentation12externalDocs:13 url: /docs14 description: Find more info here15
16# Relative URLs to OAuth2 authorization and token URLs17components:18 securitySchemes:19 oauth2:20 type: oauth221 flows:22 authorizationCode:23 authorizationUrl: /oauth/dialog24 tokenUrl: /oauth/token
複数のサーバーを使用する場合、相対URLで指定されたリソースはすべてのサーバーに存在することが期待されることに注意してください。
参照
お探しのものが見つかりませんでしたか?コミュニティに尋ねる間違いを見つけましたか?お知らせください