【问题标题】:Dropdown menu in Swagger with Flask (restx)Swagger with Flask (restx) 中的下拉菜单
【发布时间】:2021-02-20 10:31:40
【问题描述】:

我正在使用 flask-restx 库构建我的第一个 API。我用它来生成带有注释的 API 的 Swagger 文档。我目前有一些用于发布方法的字段,但默认情况下它们都接受字符串形式的输入,您必须在 Swagger 中输入它们的值“试试看”。如何使它们成为下拉列表,以便用户从中选择输入参数?

我目前为我的命名空间使用以下装饰器:

@ns.route('/')
@ns.param('param_1', 'param1')
@ns.param('param_2', 'param2')
@ns.param('param_3', 'param3')
class EndpointName(Resource):

我用这样的 post 方法解析它们:

parser = reqparse.RequestParser()  # initialize
parser.add_argument('param_1', type=str, required=True)
parser.add_argument('param_2', type=str, required=True)
parser.add_argument('param_3', type=int, required=True)

args = parser.parse_args()

它们目前以大张旗鼓的形式显示为输入字段。我将如何使它们成为具有特定值的下拉列表以供选择?我应该向装饰器添加一些东西吗?在解析器中设置不同的类型?

谢谢。

【问题讨论】:

  • 这能回答你的问题吗? flask restx enum model
  • 嗨。它不是。我目前使用@Namespace.param 装饰器和 RequestParser()。不确定如何在这种情况下使用链接中的答案...
  • 我在我的问题中添加了代码 sn-ps。非常感谢您的帮助。
  • 没有找到flask方式,但是swagger期望allowable values看起来像stackoverflow.com/a/26647373/2361131

标签: python api drop-down-menu swagger flask-restx


【解决方案1】:

除了使用@ns.param('param_1', 'param1'),您可以使用@ns.expect(parser)@ns.expect(parser, validate=True) 来启用有效负载验证,并在parser.add_argument 中提供choices

parser = reqparse.RequestParser()
parser.add_argument('param_1', type=str, required=True, choices=("yes", "no"))
...



@ns.route('/')
@ns.expect(parser)
class EndpointName(Resource):
   args = parser.parse_args()
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    相关资源
    最近更新 更多