1

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

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

@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()

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

谢谢。

4

1 回答 1

2

代替 using @ns.param('param_1', 'param1'),您可以使用@ns.expect(parser)or来@ns.expect(parser, validate=True)启用有效负载验证并让步choicesparser.add_argument

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()
...

于 2021-03-09T09:56:31.130 回答