(资料图)
遇到一个常见错误,前端Post传递data: { array: [1,2,3] },但是API接收的一直是null
API 方法
postApi ([FromBody] int[] array, [FromUri] int num)
Debug过程
- F12检查数据传递结构,没有问题
- 尝试排除法,只保留[FormBody]。
postApi ([FromBody] int[] array)
还是不行。 - 根据网络查询,添加一个请求头。后台接收不再是
null
,变成了[]
。但是数据还是不过来。然后就没办法了,反复尝试,人呆了。
headers: { "Content-Type": "application/x-www-form-urlencoded"},
- 然后就和同事讨论,参考项目其他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]