Techioz Blog

Rswag が応答にスキーマを追加しない

概要

RSwag gem を使用して Swagger OpenAPI 仕様を作成しています: https://github.com/rswag/rswag

そして、次の仕様で生成される Swagger API ドキュメントに表示される応答のスキーマを取得しようとしています。

path '/api/v2/ping' do
  get('returns a response when pinged') do
    tags 'Ping'
    consumes 'application/json'
    security [bearerAuth: []]
    parameter name: :Authorization, in: :header, type: :string
    description 'Ping the API'

    response(200, 'successful') do
      header 'X-Rate-Limit-Limit',
              schema: { type: :integer },
              description: 'The number of allowed requests in the current period'
      header 'X-Rate-Limit-Remaining',
              schema: { type: :integer },
              description: 'The number of remaining requests in the current period'
      schema type: :object,
              properties: {
                ok: { type: :boolean }
              }
      example 'application/json', :example, {
        ok: true
      }, 'Ping', 'A successful ping!'
      run_test!
    end

...

ただし、モデルは例の隣に表示されません。

スキーマを応答 (リクエストではなく) に追加するときは、応答オブジェクトのモデルを表示する必要があります。

応答にスキーマを追加するにはどうすればよいですか?

解決策

ドキュメントの例にあるように、「products ‘application/json’」という行を追加してみてください。

ドキュメントにはこれ以上の説明や参照は見つかりませんでしたが、同じ問題があり、この方法で解決しました。