API ホストとベースパス
REST APIには、エンドポイントパスが付加されるベースURLがあります。ベースURLは、API仕様のルートレベルでschemes
、host
、basePath
によって定義されます。
1host: petstore.swagger.io2basePath: /v23schemes:4 - https
すべてのAPIパスは、このベースURLに対して相対的です。例えば、/users
は実際には<scheme>://<host>/<basePath>/users
を意味します。
schemes
schemes
はAPIで使用される転送プロトコルです。Swaggerはhttp
、https
、およびWebSocketスキーム(ws
およびwss
)をサポートしています。YAMLの他のリストと同様に、スキームはリスト構文を使用して指定できます。
1schemes:2 - http3 - https
または配列リテラル構文
1schemes: [http, https]
schemes
が指定されていない場合、API仕様を提供するのに使用されるスキームがAPI呼び出しに使用されます。
host
host
は、APIを提供するホストのドメイン名またはIPアドレス(IPv4)です。スキームのデフォルトポート(HTTPの場合は80、HTTPSの場合は443)と異なる場合はポート番号を含めることができます。これは、*http(s)://*やサブパスなしのホストのみである必要があることに注意してください。有効なホスト
1api.example.com2example.com:8089393.184.216.34493.184.216.34:8089
不正な例
1http://api.example.com2example.com/api/v1
host
が指定されていない場合、APIドキュメントが提供されているホストと同じであると見なされます。
basePath
basePath
は、ホストルートに対するすべてのAPIパスのURLプレフィックスです。先頭のスラッシュ/
で始まる必要があります。basePath
が指定されていない場合、デフォルトは/
となり、すべてのパスはホストルートから始まります。有効なベースパス
1/v22/api/v23/
不正な例
1v2
ホストとスキームの省略
host
とschemes
は、より動的な関連付けのために省略できます。この場合、APIドキュメントを提供するのに使用されるホストとスキームがAPI呼び出しに使用されます。たとえば、Swagger UIベースのドキュメントが*https://api.example.com/apidocs/index.html*でホストされている場合、「試してみる」API呼び出しは*https://api.example.com*に向けられます。
FAQ
複数のホスト(開発、テスト、本番など)を指定できますか?
複数のホストはOpenAPI 3.0でサポートされています。2.0では、API仕様ごとに1つのhost
しかサポートされていません(HTTPとHTTPSを異なるホストと数える場合は2つ)。複数のホストを対象とする可能な方法は、仕様からhost
とschemes
を省略し、各ホストから提供することです。この場合、仕様の各コピーは対応するホストを対象とします。
hostとbasePathはテンプレートをサポートしていますか?例えば
1https://{customer_id}.saas-app.com/api/v12https://api.saas-app.com/v1/{customer_id}/apis
これはOpenAPI 3.0ではサポートされていますが、2.0ではサポートされていません。ホストのテンプレート化の回避策については、前の質問を参照してください。
HTTPとHTTPSで異なるポートを指定できますか?例えば
1http://example.com:80802https://example.com:8443
これはOpenAPI 3.0でサポートされていますが、2.0ではサポートされていません。2.0では、host
とschemes
を省略し、両方のホストから仕様を提供できます。この方法で、仕様の各コピーは、その仕様にアクセスするために使用されるホストとポートを対象とします。
参照
お探しのものが見つかりませんでしたか? コミュニティに質問する
間違いを見つけましたか? お知らせください