1. POST
POST的参数需要加上[FromBady],且参数只能一个
客户端提交数据的时候ContentType 为 application/x-www-form-urlencoded 或者 application/json 并没有什么影响。
如果数据是简单、平面的key-value键值对,那么使用application/x-www-form-urlencoded简单实用,不需要额外的编解码
如果数据是复杂的嵌套关系,有多层数据,那么使用application/json会简化数据的处理
C#客户端代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 var postData = new 2 { 3 day = day.ToString("yyyy-MM-dd") 4 }; 5 var content = new StringContent(JsonHelper.ConvertToStr(postData));//用的StringContent 之前用的FormUrlEncodedContent 6 content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); 7 HttpClient myHttpClient = new HttpClient(); 8 myHttpClient.BaseAddress = new Uri("http://localhost:54455"); 9 var response = myHttpClient.PostAsync("API/ProductionCalendar/Create", content).Result;
C#服务端代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 [HttpPost] 2 3 public bool Create([FromBody]JObject parameters) 4 5 { 6 7 dynamic d = parameters; 8 9 DateTime dt; 10 11 if (DateTime.TryParse(d.day.ToString(), out dt) == false) 12 13 throw new Exception($"{d.day} 时间格式不正确!"); 14 15 return _calendarDomain.Create(dt); 16 17 } 18
说明:使用JObject对应作为参数的类型,再使用动态类型dynamic 获取参数
PS:如果接口的参数类型为值类型或者string,提交数据时
附: