如何根据 OpenAPI Yaml 文件在 Flask 服务器上验证请求主体

问题描述 投票:0回答:0

实际上我是 OpenAPI 规范的新手,如果这个问题是愚蠢/基本的,我想道歉

我想知道我们可以在 OpenAPI yaml 文件中指定一些规则来请求参数,Flask 中是否有任何模块可以帮助我们在后端强制执行这些验证并在任何输入参数不遵循 OpenAPI 规范验证时引发 400 Bad request

我有一个简单的 OpenAPI yaml 文件,如下所示

openapi: '3.0.2'
info:
  title: Test Title
  version: '1.0'
servers:
  - url: http://localhost:345/
paths:
  /test:
    post:
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - "flag"
              properties:
                flag:
                  type: string
                  minLength: 6
                  maxLength: 20
                  pattern: "\d+"
      responses:
        '200':
          description: OK

我有一个烧瓶服务器

#!/usr/bin/python3

from flask import request, jsonify

app = Flask(__name__)

@app.route("/test", methods=["POST"])
def read_flag():
    stri = request.json.get("flag")
    return jsonify({"flag": stri})

if __name__ == "__main__":
    app.run(port=345)

flask 服务器从请求体中获取输入变量“flag”,我们在 OpenAPI yaml 规范中指定了 minLength、maxLength 和 pattern。

如果我想强制执行这些检查,我需要在 Flask 脚本中手动添加这些检查,但是是否有任何插件/python 模块可以根据它的 OpenAPI yaml 文件自动对请求主体执行验证?

例如在上述情况下,如果请求正文中标志变量的值小于 6 个字符,则响应应自动引发 400 错误请求。

如果有任何 Python 库/模块可以帮助我们使用 openapi 规范文件执行服务器端验证,请告诉我们。

python-3.x validation flask openapi
© www.soinside.com 2019 - 2024. All rights reserved.