我正在使用 Flask RestPlus 实现一个 Flask 应用程序,该应用程序必须在 HTTP GET 端点上接收一个 id(整数)列表,因此应用程序客户端可以获得与这些标识符匹配的结果列表,例如,...
GET /resource/1,2,3,4
GET /resource?id=1,2,3
GET /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 相应地呈现此字段。有没有人知道如何去做,可以帮助我提供一些建议?
千巷猫影
相关分类