使用标准库将Dart中的String转换为GET请求参数

bho*_*bar 4 dart dart-http flutter

我有一个多字符串,我想转换为GET请求参数.

我有一个API端点/search,它接受参数query.现在通常你的请求看起来像http://host/search?query=Hello+World.

我有一个String Hello World,我想将其转换为此URL编码参数.

当然,我可以编写逻辑将其分解为单词并+在其间添加一个但是我想知道URI类是否可以帮助这个

我正在使用Dart httpClient来提出请求.

Future<String> _getJsonData(String queryToSearch) async {
  List data = new List();
  var httpClient = new HttpClient();

  var request = await httpClient.getUrl(Uri.parse(
      config['API_ENDPOINT'] + '/search?query=' +
          queryToSearch));

  var response = await request.close();
  if (response.statusCode == HttpStatus.OK) {
    var jsonString = await response.transform(utf8.decoder).join();
    data = json.decode(jsonString);
    print(data[0]);
    return data[0].toString();
  } else {
    return "{}";
  }
}
Run Code Online (Sandbox Code Playgroud)

基本上,需要编码queryToSearch为URL参数.

Rém*_*let 10

您可以使用Uri.http(s)将所有东西(查询,主机和路径)包装在一起并相应地对它们进行编码.

    final uri = new Uri.http(config['API_ENDPOINT'], '/search', {"query": queryToSearch});
Run Code Online (Sandbox Code Playgroud)