You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter GetX的GET请求中传递查询参数?(含问题代码)

解决GetX GetConnect带查询参数的GET请求问题

问题分析

你这段代码的核心问题有两个:

  • 手动拼接Uri时,和已设置的baseUrl冲突,导致请求路径错误
  • 请求没带上初始化好的_mainHeaders,可能触发接口权限校验失败

修正后的代码

class ApiClient extends GetConnect implements GetxService{
  late String token;
  final String appBaseUrl;
  late Map<String, String> _mainHeaders;

  ApiClient({required this.appBaseUrl}){
    baseUrl = appBaseUrl;
    timeout = const Duration(minutes: 5);
    token = AppUrlConstant.TOKEN;
    _mainHeaders = {
      'Content-type':'application/json; charset=UTF-8',
      'Authorization': 'Bearer $token',
    };
  }

  Future<Response> getDataWithParam(String url, String bToken) async {
    try{
      // 直接用get方法的query参数,不用手动拼Uri
      final response = await get(
        url,
        query: {"bookingToken": bToken},
        headers: _mainHeaders, // 带上请求头
      );
      return response;
    }catch(e){
      print("API请求错误: ${e.toString()}");
      return Response(statusCode: 1, statusText: e.toString());
    }
  }
}

关键修改说明

  • 去掉手动构造Uri的逻辑,直接用get方法自带的query参数传递查询参数,GetConnect会自动帮你拼接成正确的URL格式
  • 在get调用里加上headers: _mainHeaders,确保请求带上授权头和内容类型头
  • 优化了错误打印的格式,更易读

调用示例

比如你的接口路径是/booking/detail,用户输入的token是user_booking_token_123,调用方式如下:

final apiClient = ApiClient(appBaseUrl: "https://your-api-domain.com");
final response = await apiClient.getDataWithParam("/booking/detail", "user_booking_token_123");

// 处理响应
if(response.statusCode == 200){
  // 成功获取数据
  print(response.body);
}else{
  // 处理错误
  print("请求失败: ${response.statusText}");
}

内容的提问来源于stack exchange,提问作者Ukeme Elijah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 11:37:55