dou*_*oug 11 html python api json flask
HTML中返回的异常会破坏我的JSON客户端.我想jsonify这个输出.
更多细节:我有一个视图功能,这个api应用程序的端点.
如您所见,此函数在json中返回结果.
@app.route('/route1')
def api_route1():
if user_id in request.args:
k1 = request.args['user_id']
return flask.jsonify(recs=some_function(k1))
else:
return "no valid user_id supplied"
Run Code Online (Sandbox Code Playgroud)
问题,未处理的异常是在HTML中,例如,
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>TypeError: 'NoneType' object is not iterable // Werkzeug Debugger</title>
<link rel="stylesheet"
href="?__debugger__=yes&cmd=resource&f=style.css"
type="text/css">
Run Code Online (Sandbox Code Playgroud)
这打破了我的json客户端.HTML格式显然是默认的,但我不知道如何选择退出它并指定jsonified异常(理想情况下jsonify返回甚至标题的任何东西).
我怀疑我需要的是优秀的Flask文档中的某个地方,但我找不到它.
com*_*xer 13
一个简单的JSON returing 404处理程序可能如下所示:
@app.errorhandler(404)
def page_not_found(e):
return flask.jsonify(error=404, text=str(e)), 404
Run Code Online (Sandbox Code Playgroud)
有了这个,你就可以检查data.error在客户端上,如果它存在,你可以得到data.text错误文本(通过误差e是werkzeug.exceptions.NotFound其字符串表示是"404:未找到").
使JSON客户端可以使用回溯可能会泄露敏感信息.
我的建议是:
500页可能看起来像:
{ "error": "500 - internal server error" }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10800 次 |
| 最近记录: |