Как загружать файлы в grape swagger rails? (Ошибка: запрошенный формат

#ruby-on-rails #api #file-upload #swagger #swagger-ui

#ruby-on-rails #API #загрузка файла #swagger #swagger-ui

Вопрос:

Мне нужно реализовать загрузку файлов с помощью Grape UI. У нас есть эти драгоценные камни:

 gem 'grape'
gem 'grape-entity'
gem 'grape-papertrail'
gem 'grape-swagger'
gem 'grape-swagger-entity'
  

В моем attachments_api.rb:

 # frozen_string_literal: true

module V1
  class AttachmentsAPI < ApplicationAPI
    content_type :pdf, 'multipart/form-data'

    resource :attachments do
      desc 'Upload attchment file'
      params do
        requires :file, type: File, documentation: { param_type: 'formData', data_type: 'file' }
      end
      post do
        byebug
      end
    end
  end
end
  

Но когда я запускаю его в пользовательском интерфейсе (https://editor.swagger.io /), я получал одну и ту же ошибку каждый раз (не имеет значения, какой текстовый файл я пытаюсь прикрепить, png или pdf):

 The requested format amp;#39;txtamp;#39; is not supported.
  

Более странно выглядит сгенерированный json_doc:

 paths:
  /attachments:
    post:
      description: Upload attchment file
      produces:
        - application/json
      consumes:
        - application/json
      parameters:
        - in: formData
          name: file
          type: file
          required: true
      responses:
        '201':
          description: Upload attchment file
      tags:
        - attachments
      operationId: postAttachments
  

Я не понимаю, почему мы видим там

 consumes:
  - application/json
  

Как я могу исправить эту ошибку и выполнить правильную загрузку файла? Спасибо за вашу помощь!

Комментарии:

1. consumes должно быть multipart/form-data . Проверьте, есть ли в grape-swagger аннотация для переопределения consumes значения.

Ответ №1:

Это решило проблему:

 desc 'Upload attachment file', consumes: ['multipart/form-data']