我正在使用connexion,一个用于REST API的python库,带有一个昂首阔步的定义。它适用于实际请求,但是当出现错误情况时(例如验证失败),它会返回如下响应:
{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "None is not of type 'string'"
}
标题,状态和详细信息都很好并且有意义,但我有办法控制type
键的值,以便我可以提供更多有用的信息,而不仅仅是about:blank
在那里?
在幕后,看来connexion使用了请求和瓶子,所以也许我可以利用它们来做些什么?
答案 0 :(得分:1)
我从未使用过底层框架,但通过快速扫描,该模块公开了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错误处理程序here
答案 1 :(得分:1)
我也通过将null估算给某些模型属性来解决此问题。如果您不想创建错误处理程序,只需添加标签
x-nullable: true
在进行验证的属性中。