Flask Restful reqparse add_argument类型为二进制

时间:2019-10-10 10:46:43

标签: python flask flask-restful

我使用Flask Restful创建了一个rest api,并使用reqparse来获取通过POST调用传递的数据。

到目前为止,我可以获取原始数据在Postman中传递的数据。如果我想在Postman中使用二进制文件,应该在reqparse的add_argument中包含什么类型?

当前代码:

from flask_restful import Resource, reqparse

def post(self):
    parser = reqparse.RequestParser()
    parser.add_argument('dataUrl')
    args = parser.parse_args()

2 个答案:

答案 0 :(得分:0)

如果以以下方式创建解析器:

upload_parser = server.api.parser()
upload_parser.add_argument('', location='data',
                           type=bytes, required=True)

您将收到错误TypeError:需要一个类似字节的对象,而不是'str' 我试图将type =更改为FileStorage,bytes,bytearray,但没有任何帮助。

如果代替数据使用https://flask-restplus.readthedocs.io/en/stable/_modules/flask_restplus/reqparse.html中的任何位置,则会收到有关缺少参数的错误。

答案 1 :(得分:0)

使用flask_restful.inputs.boolean并设置其默认值(否则它将不起作用)。示例:

from flask import Flask
from flask_restful import Resource, Api, reqparse, inputs

app = Flask(__name__)
api = Api(app)

parser = reqparse.RequestParser()
parser.add_argument('dataUrl', type=inputs.boolean, default=False)

@app.route('/<string:dataUrl>')
def post(self, dataUrl):
    data = parser.parse_args()
    return data