WebApi参数接收参考

.Net中使用WebApi参数接收一直是个问题,不同的传参方式后台接收的方式也不一样。之后.Net Core出来后WebApi也发生了变化,在.Net Framework时WebApi是有单独的ApiController的,在.Net Core时没有独立的ApiController了,这样接收参数上也会有一定的区别。传参有两种Get和Post方式,通过使用发现Get方式接受参数主要是Url传递其实还是比较简单的,Post方式就比较特殊了,内容是放在Body中的,因此不同时形式的传递方式接收就不一样了,为此做了个Demo测试了不同的传参方式对应的不同的接收方式,做了Post参数接收方式表格仅供参考。日后在使用WebApi开发时可以参考下。

.Net Core下的WebApi接口         
          参数
调用方式
字符串多个字符参数[FromBody]特性字符串实体类[FromBody]特性实体类动态类型[FromBody]特性动态类型[FromForm]特性实体类[FromForm]特性字符串[FromForm]特性多个字符串[FromForm]特性动态类型
示例string useridstring userid ,string name[FromBody]string useridUserDto dto[FromBody]UserDto dtodynamic dto[FromBody]dynamic dto[FromForm]UserDto dto[FromForm]string userid[FromForm]string userid, [FromForm] string name[FromForm]dynamic dto
(PostMan)通过url传参YYNNNNNNNNN
(PostMan)form-dataNNNNNYNYYYN
(PostMan)x-www-from-urlencodedNNNNNYNYYYN
(PostMan)Json application/jsonNNNNYNYNNNN
.NetCore HttpClient 通过HttpContent内容为Dictionary键值对形式NNNNNNNYYYN
.NetCore HttpClient 通过HttpContent内容为Json格式NNNYYYYNNNN
.Net HttpWebRequest  Dictionary键值对形式NNNNNNNYYYN
.Net HttpWebRequest  内容为Json格式NNNYYYYNNNN
.Net HttpClient Dictionary键值对形式NNNNNNNYYYN
.Net HttpClient  内容为Json格式NNNYYYYNNNN
.Net Framework下的WebApi接口     
          参数
调用方式
字符串多个字符参数[FromBody]特性字符串实体类[FromBody]特性实体类动态类型[FromBody]特性动态类型
示例string useridstring userid ,string name[FromBody]string useridUserDto dto[FromBody]UserDto dtodynamic dto[FromBody]dynamic dto
(PostMan)通过url传参YYNNNNN
(PostMan)form-dataNNNNNYN
(PostMan)x-www-from-urlencodedNNNYYNN
(PostMan)Json application/jsonNNNYYYY
.NetCore HttpClient 通过HttpContent内容为Dictionary键值对形式NNNYYNN
.NetCore HttpClient 通过HttpContent内容为Json格式NNNYYYY
.Net HttpWebRequest  Dictionary键值对形式NNNYYNN
.Net HttpWebRequest  内容为Json格式NNNYYYY
.Net HttpClient Dictionary键值对形式NNNYYNN
.Net HttpClient  内容为Json格式NNNYYYY

 TIP:Y表示可以接收此类型参数,N表示不能接收此类型参数

以上测试我有通过PostMan工具的各种方式测试,其中通过程序后台调用的是自己封装的HttpClient和HttpWebRequest类库来调用测试,分.Net Framework和.Net Core版本来测试的,下次把测试代码也附上。