ASP.NET Post, FromBody 接参总是null 空值. Web api 前端传递是有值的,怎么回事?

发布时间 2023-04-11 15:51:59作者: 友迪

遇到一个常见错误,前端Post传递data: { array: [1,2,3] },但是API接收的一直是null

API 方法

postApi ([FromBody] int[] array, [FromUri] int num)

Debug过程

  1. F12检查数据传递结构,没有问题

  1. 尝试排除法,只保留[FormBody]。postApi ([FromBody] int[] array)
    还是不行。
  2. 根据网络查询,添加一个请求头。后台接收不再是null,变成了[]。但是数据还是不过来。
    然后就没办法了,反复尝试,人呆了。
headers: {
  'Content-Type': 'application/x-www-form-urlencoded'
},
  1. 然后就和同事讨论,参考项目其他api,发现只要是[FormBody]都会建立一个类模型;然后就解决了
public class postParams
{
    public int[] array{ get; set; }
}
postApi ([FromBody] postParams params){
  int[] array = params.array;
}

总结反思

Post传递payload(请求载荷)格式其实是这种

{
  array: [1,2,3]
}

postApi ([FromBody] int[] array) 接收的格式是这种,这种格式其实是错误格式,所以不管怎么传都接收不到参数。所以需要创建一个类模型,才会包含{}

array: [1,2,3]