2

我想向社区寻求有关在 python (v3) 上使用 flasgger 的帮助目前我正在将 flasgger 与 Flask-Restplus 一起使用(尽管 flask-resplus 确实有它自己的 Swagger,但我更喜欢使用 flasgger)。无论如何,我的问题是在@swag_from 中打开“validation=True”时。这是我的代码片段。

Python代码:

@api.route("/v1/cancels")
class Cancels(Resource):
    @swag_from(v1swag["cancels_post"], validation=True)
    def post(self):
        token = request.form.get("token")
        <...>
        message = {
            "message": "ok",
            "token": token
        }
        return jsonify(message)

招摇(json)

v1swag = {
    "cancels_post": {
        "tags": ["/api/v1"],
        "parameters": [
            {
                "name": "token",
                "in": "body",
                "required": True,
                "description": "Cancels the provided token."
            }
        ],
        "responses": {
            "200": {
                "description": "Success!",
            }
        }
    }
}

问题是如果只使用@swag_from(v1swag["cancels_post"]),一切正常(验证除外)。我的意思是 Post 交易成功完成。

如果我将其设置为 @swag_from(v1swag["cancels_post"], validation=True) 我得到...

Response Body
{
  "message": "The browser (or proxy) sent a request that this server could not understand."
}
Response Code
400

我也试过

"in": "formData"

但是得到了这些

Response Body
No data to validate
Response Code
500
Response Headers
{
  "access-control-allow-origin": "http://192.168.1.236:4000",
  "date": "Fri, 14 Jul 2017 08:58:19 GMT",
  "server": "gunicorn/19.7.1",
  "connection": "keep-alive",
  "content-length": "19",
  "vary": "Origin",
  "content-type": "text/html; charset=utf-8"
}

您能否对我面临的这个问题有所了解。我仍然找不到可以帮助我解决问题的链接。

提前谢谢大家。

4

1 回答 1

1

抱歉,事实证明我缺少用于识别和枚举要验证的“字段”或“标签”的“模式”标签。

有另一个关于如何为 formData 创建验证的问题,但将在另一篇文章中提出。

这个帖子现在可以关闭了。

于 2017-07-14T22:03:44.930 回答