我正在用flask-restx库构建我的第一个API。我用它来生成带有注释的API的Swagger文档。我目前有一个post方法的一些字段,但它们都默认接受字符串输入,你必须在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()
它们目前在swagger中作为输入字段呈现。我该如何让它们下拉菜单中有特定的值可供选择呢?我应该在decorator中添加一些东西吗?在解析器中设置不同的类型?
谢谢。
代替使用@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()
...