.net core 中的[FromBody]

.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]。

相关文章