在请求中发送不同的数据类型时,python RequestParser不会返回错误

在请求中发送不同的数据类型时,python RequestParser不会返回错误,python,json,parsing,flask-restful,Python,Json,Parsing,Flask Restful,我创建了Flask应用程序,因为我使用RequestParser检查输入字段的数据类型,如下所示 parser = reqparse.RequestParser() parser.add_argument('article_id',type=str,required=True, help='SUP-REQ-ARTICLEID') parser.add_argument('description',type=str,required=True, help='SUP-REQ-DESCRIPTION'

我创建了Flask应用程序,因为我使用RequestParser检查输入字段的数据类型,如下所示

parser = reqparse.RequestParser()
parser.add_argument('article_id',type=str,required=True, help='SUP-REQ-ARTICLEID')
parser.add_argument('description',type=str,required=True, help='SUP-REQ-DESCRIPTION')
parser.add_argument('userid',type=str,required=True, help='SUP-REQ-USERID')
我来自postman的json输入如下

{
    "article_id": 2,
    "description":"some description",
    "userid":1
}
所以在json请求中,第一个和第三个字段是整数,在请求解析器中,我提到的数据类型是str


当我运行应用程序并从postman发送请求时-请求正在处理中,并且没有在RequestParser验证中引发任何错误。首先,postman从您的数据创建一个常规HTTP post。HTTP帖子如下所示:

article_id=2&description=some%20description&userid=1 没有类型信息,这是简单的旧URL编码。所有内容都是URL中的字符串,以&和=作为分隔符

RequestParser所能做的就是将类型从字符串转换为其他类型。这也是type=str是默认值的原因。解析器将简单地为您提供article_id和userid的字符串,仅此而已

当参数无法转换为目标类型时,会发生错误。将type=int设置为description,它将给您一个错误