【发布时间】:2019-05-13 15:47:37
【问题描述】:
我在 Flask 的 RESTful API 中编写了 POST 方法,并使用命令行 HTTP 客户端 HTTPie 成功地将数据添加到服务器。但是,当我在 Android 上尝试时,出现了错误。 这是客户端的代码:
@app.route('/factories', methods=['POST'])
def create_factory():
if not request.json or not 'fac_name' in request.json:
abort(404)
factory = {
'id': factories[-1]['id'] + 1,
'fac_name': request.json['fac_name'],
'lat': request.json['lat'],
'lng': request.json['lng']
}
factories.append(factory)
return jsonify({'factory': factory}), 201
Flask的错误:
192.168.0.101 - - [13/May/2019 03:37:44] “POST /factories HTTP/1.1”500 - Traceback(最近一次调用最后一次):
调用中的文件“C:\Users\Steve\PycharmProjects\test\venv\lib\site-packages\flask\app.py”,第 2309 行 return self.wsgi_app(environ, start_response)
文件“C:\Users\Steve\PycharmProjects\test\venv\lib\site-packages\flask\app.py”,第 2295 行,在 wsgi_app response = self.handle_exception(e)
文件“C:\Users\Steve\PycharmProjects\test\venv\lib\site-packages\flask\app.py”,第 1741 行,在 handle_exception 中 reraise(exc_type, exc_value, tb)
文件“C:\Users\Steve\PycharmProjects\test\venv\lib\site-packages\flask_compat.py”,第 35 行,重新提出 提升价值
文件“C:\Users\Steve\PycharmProjects\test\venv\lib\site-packages\flask\app.py”,第 2292 行,在 wsgi_app 响应 = self.full_dispatch_request()
文件“C:\Users\Steve\PycharmProjects\test\venv\lib\site-packages\flask\app.py”,第 1815 行,在 full_dispatch_request rv = self.handle_user_exception(e)
文件“C:\Users\Steve\PycharmProjects\test\venv\lib\site-packages\flask\app.py”,第 1718 行,在 handle_user_exception reraise(exc_type, exc_value, tb)
文件“C:\Users\Steve\PycharmProjects\test\venv\lib\site-packages\flask_compat.py”,第 35 行,重新提出 提升价值
文件“C:\Users\Steve\PycharmProjects\test\venv\lib\site-packages\flask\app.py”,第 1813 行,在 full_dispatch_request rv = self.dispatch_request()
文件“C:\Users\Steve\PycharmProjects\test\venv\lib\site-packages\flask\app.py”,第 1799 行,在 dispatch_request 中 返回 self.view_functionsrule.endpoint
文件“C:\Users\Steve\PycharmProjects\test\venv\hello.py”,第 124 行,在 create_factory 中
'fac_name': request.json['fac_name'],
TypeError: 'NoneType' 对象不可下标
更新:
我将if not 行更改为if not request.json: abort(401),现在是401 错误。而且我也试过用Postman,也是同样类型的错误,所以我认为这与Android代码无关,我从这里删除了Android代码。
【问题讨论】:
-
使用
request.get_json而不是request.json -
鉴于前面的
if not request.json,我看不出这个错误是怎么可能的。 -
我把
if not改成if not request.json: abort(401),现在是401错误。
标签: python flask postman flask-restful