Как я могу реализовать отдых, который имеет как загрузку, так и полезную нагрузку в flask-restplus

У меня есть следующий код для flask-restplus.

Запрос POST создает пользовательский интерфейс Swagger, который позволяет загрузить файл.

Затем я хочу, чтобы запрос PUT также разрешал загрузку файла из пользовательского интерфейса Swagger, а также предоставлял тело полезной нагрузки.

Для этого кода создается пользовательский интерфейс Swagger с полем ввода для просмотра и загрузки файлов и полезной нагрузкой json body.

введите здесь описание изображения

Проблема в том, что 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

person RaamEE    schedule 23.12.2018    source источник
comment
Попробуйте импортировать request из flask и получить к нему доступ с помощью request.json в обработчике запросов PUT.   -  person Konrad    schedule 23.12.2018
comment
Спасибо @KonradSitarz. request.json также возвращает None.   -  person RaamEE    schedule 24.12.2018
comment
@RaamEE, как дела. тебе удалось добиться этого?   -  person Slay    schedule 25.09.2019
comment
Я не решил это лучшее из моей памяти. С тех пор я перешел на использование uvicorn и FastAPI, которые я считаю лучшими реализациями, чем flask и flask-restplus. я   -  person RaamEE    schedule 25.09.2019


Ответы (1)


В вашем коде было применено два ожидаемых ввода. В этом случае второе ожидание игнорируется, даже если оно отображается в браузере. Таким образом, вы можете получить значение первого ожидания. Насколько я знаю, он может применить два ожидания в конечной точке.

person Venus713    schedule 23.10.2020