#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']