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 parameters4pathOpenAPI 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 serverSaaSとオンプレミス
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で指定されたリソースはすべてのサーバーに存在することが期待されることに注意してください。
参照
お探しのものが見つかりませんでしたか?コミュニティに尋ねる間違いを見つけましたか?お知らせください