当前位置: 首页 > 面试题库 >

Python Flask-Restful POST不接受JSON参数

邢烨烨
2023-03-14
问题内容

我对Flask(&Flask-Restful)很陌生。

我的问题:json将a的参数POST设置为NONE(不起作用)。

我可以form-data使用POSTMANchrome插件从中获取参数。但是,当我切换到raw(&feed a
json)时,它无法读取json并将a分配NONE给我的所有参数。

我已经阅读了一些与此相关的stackoverflow帖子:link1,link2,link3 …这些都不对我有帮助。

我使用python-2.6Flask- Restful-0.3.3Flask-0.10.1ChromePOSTMAN在Oracle的Linux 6.5。

Python代码 app.py

from flask import Flask, jsonify
from flask_restful import reqparse, abort, Api, Resource

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

parser = reqparse.RequestParser()
parser.add_argument('username', type=str)
parser.add_argument('password', type=str)

class HelloWorld(Resource):
    def post(self):
        args = parser.parse_args()
        un = str(args['username'])
        pw = str(args['password'])
        return jsonify(u=un, p=pw)

api.add_resource(HelloWorld, '/testing')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5444 ,debug=True)

*使用POSTMAN以下方法进行 *测试

  • 使用form-data:完美!
  • 使用raw- > json导致此问题

尝试过的事情#1

json在我的add_argument()方法中添加参数app.py

parser = reqparse.RequestParser()
parser.add_argument('username', type=str, location='json') # added json
parser.add_argument('password', type=str, location='json') # added json

Input :{“用户名”:“你好”,“密码”:“世界”}

Output :{“ p”:“无”,“ u”:“无”}

尝试了#2的事情

将类型更改为unicodein中的add_argument()方法app.py

parser = reqparse.RequestParser()
parser.add_argument('username', type=unicode, location='json') # change type to unicode
parser.add_argument('password', type=unicode, location='json') # change type to unicode

Input :{“用户名”:“你好”,“密码”:“世界”}

Output :{“ p”:“无”,“ u”:“无”}

PS: 每次尝试都会失败,我会不断更新我的问题。如果您需要更多信息以使这个问题更加清楚,请告诉我。


问题答案:

根据Request.json和新的Request.get_json的文档,您应将POST请求上的模仿类型设置为application/json。这是flask自动将您的JSON数据解析为该Request.json属性的唯一方法(我相信)是Flask-
Restful用来检索JSON数据所依赖的属性。

注意:较新的get_json函数具有一个选项,可将POST数据解析为JSON,而与mimetype无关



 类似资料:
  • 我和这里的用户遇到了同样的问题:log4j类型genericopobjectpool不接受参数,但我一直无法找到这个问题的答案。Log4j2在附加到rollingfile时起作用,但此处列出的方法:https://logging.apache.org/log4j/2.x/manual/appenders.html显示错误“GenericObjectPool不接受参数”

  • 我希望为我的2D游戏创造平滑的道路。看着这正是我需要的东西。每一篇文章,甚至在上,都给它一个类型,并用构造函数传递所有控制点和一个。这似乎是过时的,不再接受任何类型参数,没有它,它只能与路径工作。构造函数也不接受控制点列表。 这会产生以下错误:

  • 问题内容: 我在装有Linux和Windows的两台PC上运行带有PyDev v2.6插件的Eclipse SDK v3.6。 我想将元组作为参数传递,例如(仅作为示例): 这可以在Linux上运行并给出结果: (2,1) 在Windows上,它会引发错误: 该如何解决呢? 问题答案: 您可能在Windows上运行Python 3.x,在Linux上运行Python2.x。解包元组参数的功能已在P

  • 我为“MainWindow.fxml”文件构建了一个相当简单的控制器来处理按钮。我遵循了本教程。我已经在fxml文档中正确设置了fx:id。然而,在编译时,我得到以下错误警告 java: typejava.beans.EventHandler不接受参数 对于生产线 我的完整控制器类如下所示... 感谢任何帮助,提前感谢。

  • 问题内容: 我正在尝试生成一个简单的JSON响应。现在,我收到406 Not Acceptable错误。Tomcat说:“此请求标识的资源只能根据请求“接受”标头生成特性不可接受的响应。” 即使我的标题是 在tomcat / lib中,我拥有所有的Tomcat jar,Spring jar和jackson-all-1.9.0.jar。我在Tomcat 7中使用Spring 3.2.2。 我知道这个

  • 我正在尝试生成一个简单的JSON响应工作。现在我收到406不接受错误。Tomcat说“此请求标识的资源仅能够根据请求“接受”标头生成具有不可接受特征的响应。”即使我的标头是 在tomcat/lib中,我有所有的tomcat罐子、Spring罐子和jackson-all-1.9.0。罐子我将Spring 3.2.2用于Tomcat 7。 我知道这个问题已经讨论过很多次了,但是没有一个解决方案对我有用