带有 Flask 的 Swagger 中的下拉菜单(restx)

Dropdown menu in Swagger with Flask (restx)

我正在使用 flask-restx 库构建我的第一个 API。我用它来生成带有注释的 API 的 Swagger 文档。我目前有一些用于 post 方法的字段,但默认情况下它们都接受字符串输入,你必须在 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()

它们目前作为输入字段以 swagger 形式呈现。我将如何使它们成为具有特定值的下拉列表以供选择?我是否应该在装饰器中添加一些东西以不同的方式在解析器中设置类型?

谢谢。

您可以使用 @ns.expect(parser) or @ns.expect(parser, validate=True) 来启用负载验证,而不是使用 @ns.param('param_1', 'param1'),并在 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()
...