0

每当我尝试在 reqparse 对象中定义一个参数时,使用 flask_restx.inputs.email 类型并通过 api.expect 装饰该方法;Flask-Restx 无法创建 Swagger 文档。

示例代码:

@api.route("/route")
class View(Resource):

    parser = reqparse.RequestParser()
    parser.add_argument("email", type=inputs.email)
    
    @api.expect(parser)
    def post(self):
        ...

Swagger 文档页面上的错误

Python的错误:

Unable to render schema
Traceback (most recent call last):
  File "\venv\lib\site-packages\flask_restx\api.py", line 571, in __schema__
    self._schema = Swagger(self).as_dict()
  File "\venv\lib\site-packages\flask_restx\swagger.py", line 239, in as_dict
    serialized = self.serialize_resource(
  File "\venv\lib\site-packages\flask_restx\swagger.py", line 438, in serialize_resource
    doc = self.extract_resource_doc(resource, url, route_doc=route_doc)
  File "\venv\lib\site-packages\flask_restx\swagger.py", line 343, in extract_resource_doc
    method_params = self.expected_params(method_doc)
  File "\venv\lib\site-packages\flask_restx\swagger.py", line 382, in expected_params
    (p["name"], p) for p in expect.__schema__ if p["in"] != "body"
  File "\venv\lib\site-packages\flask_restx\reqparse.py", line 435, in __schema__
    param = arg.__schema__
  File "\venv\lib\site-packages\flask_restx\reqparse.py", line 291, in __schema__
    _handle_arg_type(self, param)
  File "\venv\lib\site-packages\flask_restx\reqparse.py", line 451, in _handle_arg_type
    param.update(arg.type.__schema__)
TypeError: 'property' object is not iterable

我可以使用 Python 的内置类型、Restx 输入上的其他类型或我自己的自定义类型,而不会出现任何问题。

有什么我做错或不知道的吗?谢谢。

4

1 回答 1

0

我找到了解决方案:

更改inputs.emailinputs.email()解决问题。

我认为这是因为电子邮件是基于类的验证器而不是函数。

于 2022-02-10T23:47:51.783 回答