我正在使用一些几个月前有效的代码,它使用 Flask 和 Flask_restful 来工作,我发现了一些非常奇怪的东西,API 不起作用,但没有给我一个错误,从 flask_restful 我使用 reqparse 到获取参数,但是每当我使用 .parse_args() 方法时,我必须给出的响应都不会通过
代码示例:
class Ping (Resource):
def get(self):
parser = reqparse.RequestParser()
parser.add_argument ("lang")
# args = parser.parse_args()
return {
"message": "any message",
}, 200
回复:
{
"message": "any message"
}
但是当我使用 parse_args() 甚至不使用变量时:
代码:
class Ping (Resource):
def get(self):
parser = reqparse. RequestParser()
parser.add_argument("lang")
args = parser.parse_args()
return {
"message": "any message",
}, 200
回复:
{
"message": "Failed to decode JSON object: None"
}
有人可以解释发生了什么吗?发生了什么事?
我正在使用 python 3.8
我希望代码中给出消息,但我每次都会收到这条消息,我尝试了不同的路径,重写类,但没有任何效果,如果有人知道如何解决这个问题或者如果有人知道如何获得url 的参数在某种程度上会很有帮助。
我刚刚找到了解决方案,我在这篇文章中看到了解决方案:Flask-Limiter is not called on Flask-Restful API's method_decorators
这个问题的解决方案非常简单,当在解析器中添加一个参数时,您必须传递一个名为“location”的参数,这将是您调用 parse_args() 时变量的名称
举个例子:
而不是这个
parser = reqparse.RequestParser()
parser.add_argument("lang")
args = parser.parse_args()
写这个:
parser = reqparse.RequestParser()
parser.add_argument("lang", location='args')
args = parser.parse_args()
如果您在位置中传递的名称与 parser.parse_args() 的值不同,即使在 url 中为参数提供了一个值,它也会为您提供空值