Rswag: Request Body not generated with formData

Created on 5 May 2020  路  3Comments  路  Source: rswag/rswag

This is my request spec:

    post 'Create a log' do
      tags 'Logs'
      consumes 'multipart/form-data'
      produces 'application/json'
      parameter name: :reference, in: :formData, type: :string, required: true, description: 'Reference'
      parameter name: :platform, in: :formData, type: :string, required: true
      parameter name: :phone_version, in: :formData, type: :string, required: true
      parameter name: :app_version, in: :formData, type: :string, required: true
      parameter name: :username, in: :formData, type: :string
      parameter name: :environment, in: :formData, type: :string
      parameter name: :meta_data, in: :formData, type: :string
      parameter name: :file, in: :formData, type: :file, required: true, description: 'File'
      parameter name: 'X-APP-TOKEN', in: :header, type: :string, required: true, description: 'App token'

This is the generated yaml

      requestBody:
        content:
          multipart/form-data:
            schema:
              type: string

And i'm looking for something like this:

      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: Required
                reference:
                  type: string
                  required: true
                  description: Required
                 ....

Most helpful comment

Thanks for the hint @xgrei

solved it this way

parameter name: :user_data, in: :body, schema: {
  type: :object,
  properties: {
    user_data: { type: :hash, description: 'user_data' }
  },
  required: [ 'user_data' ]
}

let(:user_data) { { user_data: { sub_content: { key1: '123', key2: '456' } } } }

All 3 comments

pls try this:

consumes 'application/x-www-form-urlencoded'
produces 'application/json'
parameter in: :body, schema: {
        type: :object,
        properties: {
          reference: { type: :string, description: 'reference' },
          platform: { type: :string, example: 'ios', description: 'platform' }
        },
        required: [ 'reference', 'platform' ]
      }

via: https://swagger.io/docs/specification/describing-request-body/

Hope this can help you.

Thanks for the hint @xgrei

solved it this way

parameter name: :user_data, in: :body, schema: {
  type: :object,
  properties: {
    user_data: { type: :hash, description: 'user_data' }
  },
  required: [ 'user_data' ]
}

let(:user_data) { { user_data: { sub_content: { key1: '123', key2: '456' } } } }

Solved by using Body and not form_data

Was this page helpful?
0 / 5 - 0 ratings

Related issues

salzig picture salzig  路  5Comments

johnmcdowall picture johnmcdowall  路  5Comments

douglasrlee picture douglasrlee  路  4Comments

anttikiiveri picture anttikiiveri  路  3Comments

vittoriabitton picture vittoriabitton  路  5Comments