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

Flutter http包GET请求传int列表 Laravel后端接收报500错误如何解决

问题原因
  • 你当前生成的GET查询参数格式为prices=1&prices=2&prices=3,不符合Laravel的数组参数接收规范。Laravel要求数组类型的查询参数键名必须后缀[],正确格式应为prices[]=1&prices[]=2&prices[]=3,否则Laravel只会读取最后一个同名参数的值(即示例中的3),不会自动解析为数组。
  • 后端返回500错误的核心原因是业务代码中将prices等参数按数组类型操作(如遍历、调用数组方法),但实际接收到的是字符串类型的单个值,类型不匹配触发运行时异常。
解决方法

推荐优先修改前端参数构造逻辑,适配Laravel的传参规范,无需额外后端兼容代码:

  1. 调整getFilterContent方法中数组类型参数的键名,后缀添加[],修改示例如下:
getFilterContent() {
Map<String, dynamic> data = {'key': '1'};
if (saleFilter!) {
  data.putIfAbsent('sale', () => '1');
}
if (isNewFilter!) {
  data.putIfAbsent('is_new', () => '1');
}

if (pharmaciesFilter
        .where((element) => element.isSelected == true)
        .toList()
        .length >
    0) {
  // 键名改为 pharmacies[]
  data.putIfAbsent(
      'pharmacies[]',
      () => List.generate(
            pharmaciesFilter
                .where((element) => element.isSelected == true)
                .toList()
                .length,
            (index) {
              var list = pharmaciesFilter
                  .where((element) => element.isSelected == true)
                  .toList();
              return list[index].id.toString();
            },
          ));
}
if (selFilterPrice
        .where((element) => element.selected == true)
        .toList()
        .length >
    0) {
  var list =
      selFilterPrice.where((element) => element.selected == true).toList();
  // 键名改为 prices[]
  data.putIfAbsent(
      'prices[]',
      () => List.generate(
            selFilterPrice
                .where((element) => element.selected == true)
                .toList()
                .length,
            (index) {
              return list[index].id.toString();
            },
          ));
}
return data;
}
  1. 修改后Dart的Uri.http方法会自动生成符合规范的查询参数,格式为prices[]=1&prices[]=2&prices[]=3,后端Laravel可直接通过$request->get('prices')获取到数组类型的参数值。

如果无法修改前端代码,可在后端手动解析查询字符串适配现有格式:

// Laravel 控制器中手动解析参数
parse_str($request->getQueryString(), $queryParams);
$prices = $queryParams['prices'] ?? [];

内容的提问来源于stack exchange,提问作者Vepa Sabyrow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:54:02