Dart URI:具有相同键的多个查询参数

时间:2019-04-30 10:47:59

标签: rest dart uri

我正在使用Mapquest directions API,我的目标是在许多地图点(3个或更多)之间创建一条路线。

以下是“ to”参数of the endpoint that's used to fetch a route for a given set of points的API规范(对应于目标):

  

当输入格式为键/值对时,即路由请求的结束位置。可以提供多个to参数。这仅用于单行地址。

     

有关如何正确设置所有格式(包括JSON和XML)的位置的信息,请参阅位置文档。

AFAIK表示可以为查询指定多个“ to”参数,例如“ http://www.mapquestapi.com/directions/v2/route?from=40.65,73.95&to=40.87,-73.85&to=40.70,-73.56。我对此是否正确?

因此,假设我了解规范权利,我需要构造一个适当的URI实例,该实例将分派到http的库get方法中。问题在于它在构造函数中接收到Map<String, String的查询参数,而map表示唯一性。如何使用URI类构造这样的请求?

我试图通过仅获取URI实例的字符串表示而未指定to键-值对并仅将串联的to-写入字符串的结尾,随后传递到http.get。我错过的是URI照顾字符的转义,当SDK已经为我提供URI类时,我自己写这样的东西似乎是完全不合适的。

1 个答案:

答案 0 :(得分:1)

我不知道您的阅读是否正确,但是我可以说如何多次使用相同的查询参数创建URI。

Uri.parse函数确实多次接受相同的名称,但是您正在尝试创建字符串,因此没有用

要从原始数据创建URI,构造函数Uri有一个queryParameters参数,该参数接受一个Map<String, dynamic>,其中值必须是单个String或{ {1}}。因此,就您而言:

Iterable<String>

如果您的查询部分包含多个相同的名称,则需要在var request = Uri.parse("http://www.mapquestapi.com/directions/v2/route") .resolveUri(Uri(queryParameters: { "from": "40.65,73.95", "to": ["40.87,-73.85", "40.70,-73.56"], })); 类上使用特殊功能来读取这些查询参数。默认的Uri getter返回一个queryParameters,每个名字只能有一次。您可以改用Map<String, String>吸气剂。