我正在使用 Flask RestPlus 实现一个 Flask 应用程序,该应用程序必须在 HTTP GET 端点上接收一个 id(整数)列表,因此应用程序客户端可以获得与这些标识符匹配的结果列表,例如,...GET /resource/1,2,3,4GET /resource?id=1,2,3GET /resource?id=1&id=2&id=3...默认情况下,没有任何werkzeug bultin转换器不支持,但按照此stackoverflow帖子中的步骤,url解析工作正常,我可以使用此转换器接收ID列表...class ListOfIntegerConverter(BaseConverter): def __init__(self, url_map, randomify=False): self.regex = r'\d+(?:,\d+)*,?' def to_python(self, value): return [int(x) for x in value.split(',')] def to_url(self, value): return ','.join(str(x) for x in value)...然后按照此处所述正确注册...app.url_map.converters['list_of_int'] = ListOfIntegerConverter... 用于解析 url 参数 ...@my_namespace.route('/<list_of_int:list_of_ids>/', methods=["GET"])class MyResourceById(Resource): def get(self, list_of_ids): [print(id, type(id)) for id in list_of_ids]...但生成的 swagger 文档将字段呈现为纯字符串而不是数组或整数列表,应该像这样呈现......我知道 swagger 支持多值参数,但我无法让 Flask RestPlus 相应地呈现此字段。有没有人知道如何去做,可以帮助我提供一些建议?
1 回答
千巷猫影
TA贡献1829条经验 获得超7个赞
我认为你必须使用arg 解析器:
id_parser = api.parser()
id_parser.add_argument('id[]', type=int, action='append')
@api.route('/ids', methods=["GET"])
@api.doc(parser=id_parser)
class MyResourceById(Resource):
@staticmethod
def get():
ids = request.args.getlist('id[]')
print(ids)
return ids
我会像上面那样做,但你也可以让它与你的转换器一起工作。
文件说解析器正在被弃用,但不会很快,我个人找不到替代方案。
添加回答
举报
0/150
提交
取消