Dart http リクエストにクエリパラメータを追加するにはどうすればいいですか? 質問する

Dart http リクエストにクエリパラメータを追加するにはどうすればいいですか? 質問する

Dart の http get リクエストにクエリ パラメータを正しく追加するにはどうすればよいでしょうか。URL に '?param1=one¶m2=two' を追加しようとしたときに、リクエストが正しく応答されませんでしたが、Postman では正しく動作します。私のコードの要点は次のとおりです。

    final String url = "https://www.myurl.com/api/v1/test/";
    String workingStringInPostman = "https://www.myurl.com/api/v1/test/123/?param1=one&param2=two";

    Map<String, String> qParams = {
     'param1': 'one',
     'param2': 'two',
    };


   var res = await http
      .get(Uri.encodeFull("$url${widget.pk}/"),
      headers: {HttpHeaders.authorizationHeader: "Token $token", 
        HttpHeaders.contentTypeHeader: "application/json"},
);

${widget.pk} は渡される単なる整数値です (workingStringInPostman 変数の値 123 を参照してください)。

qParams は、Uri パラメータが必要な場合に備えて用意されています。

コード例をいただければ幸いです。

ベストアンサー1

Uriを構築してリクエストに使用する必要があります。次のようなものです。

final queryParameters = {
  'param1': 'one',
  'param2': 'two',
};
final uri =
    Uri.https('www.myurl.com', '/api/v1/test', queryParameters);
final response = await http.get(uri, headers: {
  HttpHeaders.authorizationHeader: 'Token $token',
  HttpHeaders.contentTypeHeader: 'application/json',
});

見るdartcore.org の api.dartlang.org を参照してください。

おすすめ記事