Flask restplus 解析器似乎不适用于 post
Flask rest plus Parser does not seem to work with post
我已经在下面的代码端点中编写了从前端接收到的 post 数据,我已经为 get 实现了相同的方法并且它有效但不适用于 post
parser = reqparse.RequestParser()
parser.add_argument("update", type=bool, help="Update the data set")
parser.add_argument(
"set_name", type=str, help="Name of the set you want to add
@api.route("/add_set")
class AddNewSet(Resource):
@api.doc(parser=parser)
def post(self):
""" endpoint that handles request for deploying services
:return: (int) deployed service id from database.
"""
print "Hello hellooo"
args = parser.parse_args()
print "doink"
抛出错误:
{ "message": "Failed to decode JSON object: No JSON object could be decoded"
}
并且文本 "doink" 没有打印出来,所以我怀疑 parser.parse_args()
没有按预期工作,我相信或者我做错了什么。
默认情况下,RequestParser 从 request.json 和 request.values
中查找参数
请参阅:https://flask-restplus.readthedocs.io/en/stable/parsing.html#argument-locations
至于你的代码,我没有试过你为 post 定义参数的方式,我是这样做的
@api.expect(api.model(
'ModelName', dict(
arg1 = fields.String(required=True),
arg2 = fields.Integer,
)
))
def post(self):
return {'result': 'success'}
我也建议给一个明确的return子句,甚至return None
。
我已经在下面的代码端点中编写了从前端接收到的 post 数据,我已经为 get 实现了相同的方法并且它有效但不适用于 post
parser = reqparse.RequestParser()
parser.add_argument("update", type=bool, help="Update the data set")
parser.add_argument(
"set_name", type=str, help="Name of the set you want to add
@api.route("/add_set")
class AddNewSet(Resource):
@api.doc(parser=parser)
def post(self):
""" endpoint that handles request for deploying services
:return: (int) deployed service id from database.
"""
print "Hello hellooo"
args = parser.parse_args()
print "doink"
抛出错误:
{ "message": "Failed to decode JSON object: No JSON object could be decoded" }
并且文本 "doink" 没有打印出来,所以我怀疑 parser.parse_args()
没有按预期工作,我相信或者我做错了什么。
默认情况下,RequestParser 从 request.json 和 request.values
中查找参数请参阅:https://flask-restplus.readthedocs.io/en/stable/parsing.html#argument-locations
至于你的代码,我没有试过你为 post 定义参数的方式,我是这样做的
@api.expect(api.model(
'ModelName', dict(
arg1 = fields.String(required=True),
arg2 = fields.Integer,
)
))
def post(self):
return {'result': 'success'}
我也建议给一个明确的return子句,甚至return None
。