一、針對.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]。