【问题标题】:Python Connexion — Control "Type" Key in 400 Response ErrorsPython Connexion — 控制“类型”键输入 400 响应错误
【发布时间】:2016-11-04 21:07:07
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python flask connexion


    【解决方案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

    【讨论】:

    • 太棒了,科斯塔斯。谢谢您的帮助!我真的很感激!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多