Python Connexion — Control "Type" 键入 400 响应错误
Python Connexion — Control "Type" Key in 400 Response Errors
我正在使用 connexion,一个用于 REST API 的 python 库,具有 swagger 定义。它对实际请求工作正常,但是当出现错误情况时,例如验证失败,它 returns 响应如下:
{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "None is not of type 'string'"
}
标题、状态和详细信息都很好,也很有意义,但是我有没有办法控制 type
键的值,以便我可以提供更多有用的信息,而不是简单地让 about:blank
在那里?
在幕后,connexion 似乎使用了 requests 和 flask,所以也许我可以从中利用一些东西?
我从未使用过底层框架,但通过快速扫描,该模块公开了 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
我也通过将 null 归因于某些模型 属性 来解决这个问题。如果您不想创建错误处理程序,只需添加标签
x-nullable: true
在 属性 中进行验证。
我正在使用 connexion,一个用于 REST API 的 python 库,具有 swagger 定义。它对实际请求工作正常,但是当出现错误情况时,例如验证失败,它 returns 响应如下:
{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "None is not of type 'string'"
}
标题、状态和详细信息都很好,也很有意义,但是我有没有办法控制 type
键的值,以便我可以提供更多有用的信息,而不是简单地让 about:blank
在那里?
在幕后,connexion 似乎使用了 requests 和 flask,所以也许我可以从中利用一些东西?
我从未使用过底层框架,但通过快速扫描,该模块公开了 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
我也通过将 null 归因于某些模型 属性 来解决这个问题。如果您不想创建错误处理程序,只需添加标签
x-nullable: true
在 属性 中进行验证。