Flutter调用API发送POST请求失败,products参数类型错误
解决方案:Flutter POST请求products字段类型不匹配问题
问题核心
错误提示"products":["Expected a list of items but got type \"int\"."]说明:你的Flutter代码向API发送的products字段是单个整数类型,但API要求该字段必须是数组/列表类型。而Postman测试正常,是因为你在Postman里传的是数组格式。
具体修复步骤
1. 修正请求体中products的格式
检查你的Flutter API Controller代码,找到构造请求体的部分,确保products被包装成数组:
- 错误示例(单个int):
Map<String, dynamic> requestBody = { 'products': selectedProductId, // selectedProductId是单个int,不符合要求 // 其他字段... };
- 正确示例(包装为数组):
// 单个产品ID的情况 Map<String, dynamic> requestBody = { 'products': [selectedProductId], // 把单个int放入数组中 // 其他字段... }; // 多个产品ID的情况 List<int> selectedProductIds = [101, 102, 103]; Map<String, dynamic> requestBody = { 'products': selectedProductIds, // 直接传入List<int> // 其他字段... };
2. 确认请求头与Postman一致
确保请求头的Content-Type和Authorization格式正确,和Postman完全匹配:
final headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer ${yourToken}', // 注意Bearer后有空格 };
3. 调试验证请求体(可选)
发送请求前打印请求体,确认products字段的格式:
print(requestBody); // 输出应包含类似 "products": [101] 的结构
如果使用Dio库,可开启日志拦截器,查看实际发送的请求内容,和Postman的请求体做对比,排查差异。
内容的提问来源于stack exchange,提问作者sakib Ovi
相关产品推荐
相关产品推荐

