3
我正在一个小型web界面上运行一个覆盆子pi在家里。它承载了一些REST API以及一些网页。Python烧瓶 - json和html 404错误
我正在使用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/<int:task_id>', 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。
所以我已经覆盖了的ErrorHandler:
@app.errorhandler(404)
def not_found(error):
return make_response(jsonify({'error': 'Not found'}), 404)
不过,现在所有的错误返回JSON,而不仅仅是API错误。
所以我的问题,我怎样才能使API失败的请求返回json错误,但其他错误默认的html错误页面?
@ cricket_007哦,目前这只是一个全局变量,尽管稍后将被代码寻找数据库中的任务所取代。 –
做一个自定义的装饰器来处理失败的api请求 –
@TheOddler任何方式什么是任务或在何处定义在这方面无关 –