ASP.NET Post, FromBody 接参总是null 空值. Web api 前端传递是有值的,怎么回事?-播报
2023-04-11 16:20:55    博客园


(资料图)

遇到一个常见错误,前端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]

标签: