.net core中post数据时候,有时候需要加[FromBody],有时候却不需要,来研究下什么个情况。
写两段测试代码
[HttpPost("PostList")] public void PostList([FromBody]List<Person> person) { List<Person> personObj = person; } [HttpPost("PostSingle")] public void PostSingle(Person person) { Person personObj = person; }
先测试提交单个对象,如果选择文本方式提交json个数据,直接抛出400错误。
接着Content-Type改成application/json,可以看到提交成功了。
断点到代码,数据读取正常。
接着我们加上[FromBody]试下
可以看到同样有数据,说明post单个对象的json数据时候,加不加[FromBody]都可以正常读取参数。
接着我们来看下列表内容的json是否有区别。
同样,当我们设置Content-Type如果不为application/json时,提交是进不了接口,客户端报400错误。
首先看加[FromBody]
结果显然是正确的!
再看不加[FromBody]
客户端可以提交数据,返回200,但是接口中获取的数据却为空了!说明读取列表时候必须加加[FromBody]
综合上述,客户端如果是提交json数据时候建议都加上[FromBody]。
如果客户端提交的数据Content-Type如果不为application/json时,会报错,如果要解决报错,需要在接口上加上[FromForm]。
原文地址:https://www.cnblogs.com/KQNLL/p/10322143.html
时间: 2024-10-20 07:48:26