Python Connexion - 控制400个响应错误中的“类型”键

时间:2016-11-04 21:07:08

标签: python flask python-requests

我正在使用connexion,一个用于REST API的python库,带有一个昂首阔步的定义。它适用于实际请求,但是当出现错误情况时(例如验证失败),它会返回如下响应:

{
  "type": "about:blank",
  "title": "Bad Request",
  "status": 400,
  "detail": "None is not of type 'string'"
} 

标题,状态和详细信息都很好并且有意义,但我有办法控制type键的值,以便我可以提供更多有用的信息,而不仅仅是about:blank在那里?

在幕后,看来connexion使用了请求和瓶子,所以也许我可以利用它们来做些什么?

2 个答案:

答案 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 在进行验证的属性中。