Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不带reqparse.RequestParser()的简单请求解析_Python_Flask_Flask Restful - Fatal编程技术网

Python 不带reqparse.RequestParser()的简单请求解析

Python 不带reqparse.RequestParser()的简单请求解析,python,flask,flask-restful,Python,Flask,Flask Restful,flask\u restful.reqparse已被弃用(): Flask RESTful的整个请求解析器部分将被删除,并将被关于如何与其他包集成的文档所取代,这些包可以更好地完成输入/输出工作(例如)。这意味着它将维持到2,但认为它被弃用。不要担心,如果您现在有代码使用它,并且希望继续这样做,那么它不会很快消失 我简单地看了一下棉花糖,仍然有点困惑,如果我想替换reqparse.RequestParser(),该如何使用它。我们应该写什么,而不是像下面这样的东西: 从烧瓶导入烧瓶,请求,响应

flask\u restful.reqparse
已被弃用():

Flask RESTful的整个请求解析器部分将被删除,并将被关于如何与其他包集成的文档所取代,这些包可以更好地完成输入/输出工作(例如)。这意味着它将维持到2,但认为它被弃用。不要担心,如果您现在有代码使用它,并且希望继续这样做,那么它不会很快消失

我简单地看了一下棉花糖,仍然有点困惑,如果我想替换
reqparse.RequestParser()
,该如何使用它。我们应该写什么,而不是像下面这样的东西:

从烧瓶导入烧瓶,请求,响应
从flask_restful导入请求解析
@app.route('/',方法=['GET'])
定义my_api()->响应:
parser=reqparse.RequestParser()
parser.add_参数('username',type=str,required=True)
args=parser.parse_args()
返回{'message':'cool'},200
(在阅读了半个小时的更多文档后…)

RequestParser默认情况下查看
MultiDict
请求值(显然是查询参数,然后根据查询结果形成主体参数)。因此,我们只需要以某种方式验证
request.values
中的数据

下面是一段来自棉花糖的相关代码。这似乎比
reqparse
要复杂得多:首先创建一个模式类,然后实例化它,然后让它加载请求JSON。我宁愿不必为每个API端点编写单独的类。是否有类似于
reqparse
的更轻量级的东西,您可以在定义端点的函数中写入所有类型的参数验证信息

from flask import Flask, request, Response
from flask_restful import reqparse
from marshmallow import (
    Schema,
    fields,
    validate,
    pre_load,
    post_dump,
    post_load,
    ValidationError,
)

class UserSchema(Schema):
    id = fields.Int(dump_only=True)
    email = fields.Str(
        required=True, validate=validate.Email(error="Not a valid email address")
    )
    password = fields.Str(
        required=True, validate=[validate.Length(min=6, max=36)], load_only=True
    )
    joined_on = fields.DateTime(dump_only=True)

user_schema = UserSchema()

@app.route("/register", methods=["POST"])
def register():
    json_input = request.get_json()
    try:
        data = user_schema.load(json_input)
    except ValidationError as err:
        return {"errors": err.messages}, 422
    # etc.