我正在家里制作一个在树莓派上运行的小型网络界面.它托管一些REST api以及一些网页.
我正在使用Flask,并为索引提供了一个路由’/’,以及一些用于REST api’/api/v1.0/tasks’的路由.
@app.route('/')
def index():
return render_template('index.html')
@app.route('/gnodes/api/v1.0/tasks', methods=['GET'])
def get_tasks():
return jsonify({'tasks': tasks})
@app.route('/gnodes/api/v1.0/tasks/', methods=['GET'])
def get_task(task_id):
task = [task for task in tasks if task['id'] == task_id]
if not task:
abort(404)
return jsonify({'task': task[0]})
但是,abort(404)返回一个html错误页面,这对普通页面很好,但我想在请求不存在的任务时返回一个json.
所以我重写了错误处理程序:
@app.errorhandler(404)
def not_found(error):
return make_response(jsonify({'error': 'Not found'}), 404)
但是,现在所有错误都返回json,而不是仅返回api错误.
所以我的问题是,如何向API发出失败请求返回json错误,但其他错误是默认的html错误页面?