Python request.json未检索到Flask POST
我想使用Flask创建一个RESTAPI。 作为一个“框架”,我发现这似乎非常适合使用Flask创建REST-API,而且似乎也很容易 我有这个功能:Python request.json未检索到Flask POST,python,json,post,flask,Python,Json,Post,Flask,我想使用Flask创建一个RESTAPI。 作为一个“框架”,我发现这似乎非常适合使用Flask创建REST-API,而且似乎也很容易 我有这个功能: @app.route('/api/users', methods=['POST']) def new_user(): username = request.json.get('username') password = request.json.get('password') 但是,当我尝试使用SOAPUI或HTTPReques
@app.route('/api/users', methods=['POST'])
def new_user():
username = request.json.get('username')
password = request.json.get('password')
但是,当我尝试使用SOAPUI或HTTPRequester(在Firefox中)发布数据时,我总是得到一个服务器错误500
我的应用程序/json数据如下所示:
{
'username' : 'John',
'password' : '1234'
}
'{"username" : "John", "password" : "1234"}'
我检查了在这两个TOL中,它都是作为application/json发送的
因此,我在request.json之前插入了以下内容:
if not request.json:
abort(400)
现在它以代码400中止-所以它似乎不是json对象,对吗
然后我插入了以下几行:
test = request
print test.data
然后我在控制台中检索它,它看起来像JSON:
{
'username' : 'John',
'password' : '1234'
}
我知道我可以用这个把它转换成一个词汇:
dict = ast.literal_eval(test.data)
但我想使用烧瓶中的标准函数
提前感谢您…首先检查您的客户端发送的HTML标题(JS或其他任何内容)<代码>内容类型应为
application/json
。并使用request.get_json()
UPD:您还可以尝试使用
request.get\u json(force=True,silent=True)
。这个方法的flask代码非常简单,你可以通过设置断点或写日志来调试它,以便更好地理解发生了什么。所以这就是现在真正对我有效的方法:
if request.headers['Content-Type'] == 'application/json':
if not request.json:
abort(400)
jdata = json.loads(request.data)
if not request.json:
abort(400)
username = jdata.get('username')
password = jdata.get('password')
我还尝试使用cURL发布JSON-始终确保对出站字符串使用”
,对内部键使用“
,如下所示:
{
'username' : 'John',
'password' : '1234'
}
'{"username" : "John", "password" : "1234"}'
Python不关心字典的使用方式,但JSON会…为什么不使用
JSON
库?my_dict\u data=JSON.loads(request.data)
您可能想在REST客户机中尝试使用“而不是”。我记得邮递员不接受“for application/json”。