我正在使用 Flask RestPlus 實(shí)現(xiàn)一個(gè) Flask 應(yīng)用程序,該應(yīng)用程序必須在 HTTP GET 端點(diǎn)上接收一個(gè) id(整數(shù))列表,因此應(yīng)用程序客戶端可以獲得與這些標(biāo)識(shí)符匹配的結(jié)果列表,例如,...GET /resource/1,2,3,4GET /resource?id=1,2,3GET /resource?id=1&id=2&id=3...默認(rèn)情況下,沒(méi)有任何werkzeug bultin轉(zhuǎn)換器不支持,但按照此stackoverflow帖子中的步驟,url解析工作正常,我可以使用此轉(zhuǎn)換器接收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)...然后按照此處所述正確注冊(cè)...app.url_map.converters['list_of_int'] = ListOfIntegerConverter... 用于解析 url 參數(shù) ...@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 文檔將字段呈現(xiàn)為純字符串而不是數(shù)組或整數(shù)列表,應(yīng)該像這樣呈現(xiàn)......我知道 swagger 支持多值參數(shù),但我無(wú)法讓 Flask RestPlus 相應(yīng)地呈現(xiàn)此字段。有沒(méi)有人知道如何去做,可以幫助我提供一些建議?
1 回答

千巷貓影
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
我認(rèn)為你必須使用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
我會(huì)像上面那樣做,但你也可以讓它與你的轉(zhuǎn)換器一起工作。
文件說(shuō)解析器正在被棄用,但不會(huì)很快,我個(gè)人找不到替代方案。
添加回答
舉報(bào)
0/150
提交
取消