3

我正在使用connexion,这是一个用于 REST API 的 python 库,它有一个大摇大摆的定义。它在实际请求中正常工作,但是当出现错误条件时,例如验证失败,它会返回如下响应:

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

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

在引擎盖下,似乎 connexion 使用请求和烧瓶,所以也许我可以从它们中利用一些东西?

4

2 回答 2

3

我从未使用过底层框架,但通过快速扫描,该模块公开了 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 错误处理程序的更多信息

于 2016-11-04T22:07:23.153 回答
1

我也通过将 null 归因于某些模型属性来解决这个问题。如果您不想创建错误处理程序,只需 x-nullable: true 在正在验证的属性中添加标记。

于 2019-03-24T22:02:59.860 回答