У меня есть следующий код для flask-restplus.
Запрос POST генерирует интерфейс Swagger, который позволяет загружать файл.
Затем я хочу, чтобы запрос PUT также разрешил загрузку файла из пользовательского интерфейса Swagger и также предоставил тело полезной нагрузки.
Для этого кода пользовательский интерфейс Swagger создается с просмотром и загрузкой файловполе ввода и полезная нагрузка тела json.
Проблема заключается в том, что api.payload запроса PUT возвращает None.
Если яудалите @api.expect(upload_parser)
, api.payload возвращает поля, определенные amazon_data_csv_update_model
.
Что я делаю не так?
upload_parser = reqparse.RequestParser()
upload_parser.add_argument('file', location='files', type=FileStorage, required=True)
amazon_data_csv_update_model = api.model('AmazonDataCSVUpdateModel', {
'uuid_to_update': fields.String(description='The UUID of the file to update', required=True)
})
@api.route('/amazon-data/upload')
@api.expect(upload_parser)
class AmazonDataCSVUpload(Resource):
def post(self):
upload_args = upload_parser.parse_args()
uploaded_csv_file = upload_args['file'] # This is FileStorage instance
json_uuid = AmazonHandler.upload_amazon_data_csv(uploaded_csv_file)
return {'amazon_data_uuid': json_uuid}, 201
@api.expect(amazon_data_csv_update_model)
def put(self):
put_payload = request.json
print(put_payload)
put_payload = api.payload
print(put_payload)
upload_args = upload_parser.parse_args()
uploaded_csv_file = upload_args['file'] # This is FileStorage instance
json_uuid = AmazonHandler.upload_amazon_data_csv(uploaded_csv_file, uuid)
return {'amazon_data_uuid': json_uuid}, 200