flutter - Http从不同列表中获取查询参数
问题描述
我需要发出一个 HTTP GET 请求来检索一些过滤后的数据。我的 API 接受 3 个参数数组,在我的代码中我有 3 个不同的参数列表。是否可以创建一个包含来自 3 个 int 列表的具有相同键和不同值的参数的 Map?
Future<List<Tour>> fetchFilteredTours(List<int> bikeTypeIds,
final List<int> difficultyIds, final List<int> locationIds) async {
final Map<String, String> qryParams = {
};
//How to create my qryParams with all arrays values?
//Something like
qryParams.add(Map.fromIterable(bikeTypeIds, key: (e) => 'bikeTypeId', value: (e) => e));
final response = await http
.get(Uri.http('myDomain', '/api/search/tours', qryParams));
return parseResponse(response);
}
期望的结果是{{protocol}}://{{url}}/api/search/tours?bikeTypeId=1&bikeTypeId=2&difficultyId=1&locationId=1
解决方案
final keys = ['bikeTypeId', 'difficultyId', 'locationId'];
final values = [bikeTypeIds, difficultyIds, locationIds].map(
(ids) => ids.map((e) => e.toString()),
);
创建一个 Map 实例,将给定的键与值相关联。
final qryParams = Map.fromIterables(keys, values);
从其组件创建一个新的 URI。
Uri(scheme: 'https', host: 'myDomain', path: 'api/search/tours', queryParameters: qryParams);
推荐阅读
- javascript - 如果元素在同一位置或堆叠,如何设置集群?
- javascript - 文件上传和验证
- php - php.ini 中 output_buffering 的值 1 和 4096 有什么区别
- angular - Primeng ConfirmDialog 在点击 Yes、No 或 Close(X) 后没有关闭
- machine-learning - ignite:训练模型后如何从 db/work 文件夹中删除创建的 ML 数据集
- c++ - “煎饼贪吃”运动;如果用户输入两个或更多相等的值怎么办
- javascript - 使用 JSON 模式清理对象
- c++ - 带有模板的数组的大小
- video-streaming - 加载播放器的 VideoJs 流错误
- docker - 我的烧瓶应用程序身份验证工作正常,但是当我使用 alpine 图像对整个应用程序进行 dockerise 时,身份验证被破坏