我正在使用connexion,这是一个用于REST API的python库,具有swagger定义。对于实际请求,它可以正常工作,但是当出现错误条件(例如验证失败)时,它返回如下响应:
{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "None is not of type 'string'"
}
标题,状态和细节都很好,有意义,但是我是否有办法控制type
键的值,以便我可以提供更多有用的信息,而不是简单地在那里有about:blank
?
在引擎盖下,似乎连接使用请求和烧瓶,所以也许有一些我可以利用他们?
我从来没有使用过底层框架,但是通过快速浏览,该模块暴露了Flask应用程序的构造函数。这样,你就可以用你的swagger文件定义一个新的应用程序
app = connexion.App(__name__, specification_dir='swagger/')
,然后添加自定义错误处理程序。例如,对于400错误,您可以执行
from flask import jsonify
@app.errorhandler(400)
def page_not_found(e):
custom_data = {
'type': 'Advanced type'
# etc
}
return jsonify(custom_data)
在这里阅读更多关于Flask错误处理程序的信息
我也通过将null输入到一些模型属性来处理这个问题。如果不想创建错误处理程序,只需添加标记x-nullable: true