python - 如何在 flask-restplus 中实现同时具有上传和有效负载的休息
问题描述
我有以下烧瓶-restplus的代码。
POST 请求会生成一个允许上传文件的 Swagger UI。
然后我希望 PUT 请求还允许从 Swagger UI 上传文件并提供有效负载正文。
对于此代码,使用文件浏览和上传输入字段以及 json 正文有效负载生成 Swagger UI。
问题是 PUT 请求的 api.payload 返回 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
解决方案
在您的代码中,它被应用了两个期望放置。在这种情况下,即使第二个期望显示在浏览器上,它也会被忽略。所以你可以得到第一个期望的值。据我所知,它能够在一个端点中应用两个期望。
推荐阅读
- stata - 删除 catplot 中的类别标签
- r - 使用 as.factor 在 r 中创建一个新的分类值
- r - 在 R 中使用 library earth 的 MARS 模型:为什么“cv_mars”和“mars1”都产生相同的结果?
- java - 插件:在项目结构中保护文件的最佳方法?
- javascript - 尝试运行和调试
- c++ - 在 QTableView 上绘制 QGraphicsLineItem
- python - 为什么我的程序不打印第 9 行而是打印第 7 行?
- sql - to_SQL nan 和 Null 值,仍然在 SQL 表中获取 'nan' 字符串文字
- node.js - 开发依赖项和 Cypress.io 中的依赖项之间的区别
- django - Wagtail 管理站点和 Django 管理站点之间的区别?