一、针对.net core
中post
类型的api注意的地方(前提是Controller
上加[ApiController]
特性)。默认是这个。
1、如果客户端Content-Type
是application/json
, api
接口如果是用单个对象做参数的时候,加或者不加[FromBody]
都可以正常解析参数,但是接口是用对象列表做参数时候,则必须加[FromBody]
,否则读取不到参数。
2、如果客户端Content-Type
不是application/json
,api
接口必须加[FromForm]
,否则客户端调用接口会报400
错误。
3、如果加上[FromBody]
,客户端Content-Type
不是application/json
,接口会报400
错误。
二、Controller
上不加[ApiController]
特性),当application/json
类型的时,读取的参数将全为空,而非application/json
却可以正常解析,无论怎么客户端不会抛出400
异常。
写两段测试代码Controller
上加[ApiController]
特性
[HttpPost("PostList")]
public void PostList([FromBody]List<Person> person)
{
List<Person> personObj = person;
}
[HttpPost("PostSingle")]
public void PostSingle(Person person)
{
Person personObj = person;
}
综合上述,客户端如果是提交json数据时候建议都加上[FromBody]
。
如果客户端提交的数据Content-Type
如果不为application/json
时,会报错,如果要解决报错,需要在接口上加上[FromForm]