1. ホーム
  2. http

[解決済み] Dart httpリクエストにクエリパラメータを追加する方法は?

2023-06-30 01:42:19

質問

Dart の http get リクエストにクエリパラメータを正しく追加するにはどうしたらよいでしょうか。私は、私のURLに '?param1=one&param2=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パラメータが必要な場合に備えて、接続のためにあります。

コード例は歓迎されるでしょう。

どのように解決するのですか?

を構築することになります。 Uri を作成し、それをリクエストに使用します。次のようなものです。

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

参照 https://api.dartlang.org/stable/2.0.0/dart-core/Uri/Uri.https.html