Open8

Swaggerについて

ふじしろふじしろ

必須の項目は以下3つ。これが記載されていれば動く。

  • openapi
  • info
  • paths
ふじしろふじしろ

coponents/difinitionsについて

繰り返し使用する記述を共通化させることができる仕組み。
openapi(swagger 3.0)になってからはconponentsと呼ばれているが、
swagger(swagger 2.0)の頃はdefinitionsと呼ばれていた模様

ふじしろふじしろ

serversについて

servers:
  - url: https://example.com/api

のように記述し、pathsの手前の共通するURLを定義できる。

この記事では、APIのベースパスを指定すると表現されていた

ふじしろふじしろ
  1. serversに共通するURL記述
  2. URL設計をもとにpathsにパスを一通り書いていく
  3. URL設計をもとにpathsのメソッドを一通り書いていく
  4. infoを以下に絞る
    1. title
    2. description
    3. contact
    4. version
  5. serversに変数を活用したurlを記載
  6. pathsの各メソッドに以下の項目を記述 :参考
    • summary
    • description
    • operationId(書き方がわからなかったのでノリで記述)
    • response(中身は空)
    • ここまで書くと大枠が出来上がる。
  7. pathsの各メソッドに必要に応じて以下の項目を追記:実用的なOASを書く
    • parameters
      • クエリ文字列またはパスパラメータがなければ不要
    • requestBody(schemaは後回し)
      • 今回の場合、getとdeleteでは不要
    • response(成功時のレスポンスのみ記述してエラーは後回し。schemaも後回し)
      • descriptionは必須とのこと
  8. componentsとschemaを作成:componentsとschema
  9. tagを作成してグルーピング
ふじしろふじしろ
タグ名 内容
info 概要を記述する
servers サーバーのURIやAPIのベースパスを指定する
tags APIをグルーピングして表示するためのタグを生成する
paths API仕様書の中心。ここにAPIのURLやメソッドを記述する
components schemaなどAPI仕様書内で繰り返し使用する要素を生成する
ふじしろふじしろ

同じステータスコードで異なるエラーレスポンスを返す時の記述方法がわからない

参考記事

記述例

以下のように記述することで、Examplesによりレスポンスを切り替えることができる。

# パスの記述
paths:
  /pets:
    get:
      responses:
        '200':
           $ref: '#/components/responses/Responses' 
# コンポーネントの構成
components:
  responses:
    Responses:
      description: 同じステータスコードから複数のレスポンスを返すことができます。
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/responses/Response1'
              - $ref: '#/components/responses/Response2'
              - $ref: '#/components/responses/Response3'
          examples:
            Reaponse1:
              value:
                status: 400
                message: レスポンス1
            Reaponse2:
              value:
                status: 400
                message: レスポンス2
            Reaponse3:
              value:
                status: 400
                message: レスポンス3
# oneOfで記述しているResponseの記述は省略
ふじしろふじしろ

Bearer認証の記述

Bearer Authentication

openapi: 3.0.0
...
# 1) Define the security scheme type (HTTP bearer)
components:
  securitySchemes:
    bearerAuth:            # arbitrary name for the security scheme
      type: http
      scheme: bearer
      bearerFormat: JWT    # optional, arbitrary value for documentation purposes
# 2) Apply the security globally to all operations
security:
  - bearerAuth: []         # use the same name as above