パスと操作
Swagger の用語では、**パス**は API が公開するエンドポイント (リソース) であり、たとえば /users
や /reports/summary
などです。**操作**はこれらのパスを操作するために使用される HTTP メソッドであり、たとえば GET、POST、DELETE などです。
パス
API のパスと操作は、API 仕様のグローバルな paths
セクションで定義されます。
1paths:2 /ping: ...3 /users: ...4 /users/{id}: ...
すべてのパスは basePath
に相対的です (API ホストとベース URL を参照)。完全なリクエスト URL は scheme://host/basePath/path
として構築されます。
パスのテンプレート化
Swagger はパスのテンプレート化をサポートしており、波括弧 {}
を使用して URL の一部をパスパラメーターとしてマークできます。
1/users/{id}2/organizations/{orgId}/members/{memberId}3/report.{format}
API クライアントは、API コールを行う際に、/users/5
や /users/12
のような適切なパラメーター値を提供する必要があります。
操作
各パスには、そのパスにアクセスするために使用できる操作 (HTTP メソッド) を定義します。Swagger 2.0 は get
, post
, put
, patch
, delete
, head
, options
をサポートしています。1 つのパスで複数の操作をサポートできます。たとえば、ユーザーのリストを取得するための GET /users
と、新しいユーザーを追加するための POST /users
などです。Swagger は、パスと HTTP メソッドの組み合わせをユニークな操作として定義します。これは、同じパスに対する 2 つの GET メソッドや 2 つの POST メソッドは許可されないことを意味します。パラメーターが異なっていても (パラメーターは一意性に影響しません)。操作の最小限の例
1paths:2 /ping:3 get:4 responses:5 200:6 description: OK
パラメーターとレスポンススキーマを含むより詳細な例
1paths:2 /users/{id}:3 get:4 summary: Gets a user by ID.5 description: >6 A detailed description of the operation.7 GitHub Flavored Markdown can be used for rich text representation,8 such as **bold**, *italic* and [links](https://swagger.dokyumento.jp).9 operationId: getUsers10 tags:11 - users12 produces:13 - application/json14 - application/xml15 parameters:16 - name: id17 in: path18 description: User ID19 type: integer20 required: true21 responses:22 200:23 description: OK24 schema:25 $ref: "#/definitions/User"26 externalDocs:27 url: http://api.example.com/docs/user-operations/28 description: Learn more about User operations provided by this API.29definitions:30 User:31 type: object32 properties:33 id:34 type: integer35 name:36 type: string37 required:38 - id39 - name
操作は、ドキュメント作成の目的でいくつかのオプション要素をサポートしています
- 操作が何を行うかの短い
summary
とより長いdescription
。description
は複数行に対応し、リッチテキスト表現のためにGitHub Flavored Markdownをサポートしています。 tags
はSwagger UIで操作をグループ化するために使用されます。externalDocs
は、追加のドキュメントを含む外部リソースを参照することを可能にします。
操作パラメーター
Swagger は、パス、クエリ文字列、ヘッダー、リクエストボディを介して渡される操作パラメーターをサポートしています。詳細については、パラメーターの記述を参照してください。
operationId
各操作には、一意の operationId
を指定できます。一部のコードジェネレーターでは、この値を使用してコード内の対応するメソッドに名前を付けます。
1/users:2 get:3 operationId: getUsers4 summary: Gets all users.5 ...6 post:7 operationId: addUser8 summary: Adds a new user.9 ...10 /user/{id}:11 get:12 operationId: getUserById13 summary: Gets a user by user ID.14 ...
パス内のクエリ文字列
クエリ文字列パラメーターはパスに含め**てはなりません**。代わりにクエリパラメーターとして定義する必要があります。不正な例
1paths:2 /users?role={role}:
正しい例
1paths:2 /users:3 get:4 parameters:5 - in: query6 name: role7 type: string8 enum: [user, poweruser, admin]9 required: false
これは、クエリ文字列のみが異なる複数のパスを持つことが不可能であることを意味します。
1GET /users?firstName=value&lastName=value2GET /users?role=value
これは、Swagger がパスと HTTP メソッドの組み合わせをユニークな操作と見なし、追加のパラメーターは操作をユニークにしないためです。代わりに、次のようなユニークなパスを使用する必要があります。
1GET /users/findByName?firstName=value&lastName=value2GET /users/findByRole?role=value
非推奨としてマーク
特定の操作をdeprecated
としてマークして、使用を停止するよう指示できます。
1/pet/findByTags:2 get:3 deprecated: true
ツールは非推奨の操作を特定の方法で処理する場合があります。たとえば、Swagger UI は異なるスタイルで表示します。
お探しのものが見つかりませんでしたか? コミュニティに質問する
間違いを見つけましたか? お知らせください