【问题标题】:Flask Swagger documentation query parameter GET requiredFlask Swagger 文档查询参数 GET 需要
【发布时间】:2019-05-05 00:54:26
【问题描述】:

我在我的烧瓶项目中使用Swagger documentation 来记录端点和参数。

为我正在做的端点定义查询参数:

@api.doc(params={
    'name_query_parameter': 'Description'})

我想知道该参数是否可以在文档中显示为“必需”,就像参数是路径的一部分 (home/name_query_parameter/something/something) 一样。

查看文档我只发现以下内容:

@api.expect()
@api.doc(body=the_defined_payload)

但这意味着信息在正文中,我不能通过 GET 请求获得。另外,我希望它作为查询参数,而不是作为有效负载的一部分。

这可能吗?

谢谢。

【问题讨论】:

  • 由于文档的原因,似乎可以使用@api.expect(parser) 完成,并且在定义解析器时指定参数是否必须在查询或正文中。

标签: flask swagger


【解决方案1】:

此问题的最终解决方案如下,感谢 Mikhail 对解析器的评论。不过我不得不承认,对于flask-restplus,文档并不是最好的。

我使用了 params 部分来确保字段连同描述和解析器一起出现在文档中以进行自定义验证,并使字段按要求显示,即使它位于 URL 中作为参数。

parser = reqparse.RequestParser()
parser.add_argument('superimportant', 
type=inputs.boolean, location='args', required=True)
parser.add_argument('something', type=custom_validation_parser, location='args')

class MySuperClassResource(Resource):
@api.doc(parser=categories_by_retailer_parser,
         params={"superimportant": "Description of this important field",
                 "something": "bla bla"
                 })
def get(self, blable):
    parser.parse_args()
    pass

custom_validation_parser 只是一种允许自定义验证的方法,例如对空值进行验证。该方法的格式如下。 (它必须返回你要访问的值,如果有问题,提出ValueError)。

def custom_validation_parser(value):
    if not value:
        raise ValueError("Must not be empty.")
    return value

【讨论】:

    猜你喜欢
    • 2023-04-11
    • 1970-01-01
    • 2017-01-19
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    相关资源
    最近更新 更多