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 userid string userid ,string name [FromBody]string userid UserDto dto [FromBody]UserDto dto dynamic dto [FromBody]dynamic dto [FromForm]UserDto dto [FromForm]string userid [FromForm]string userid, [FromForm] string name [FromForm]dynamic dto
(PostMan)通過url傳參 Y Y N N N N N N N N N
(PostMan)form-data N N N N N Y N Y Y Y N
(PostMan)x-www-from-urlencoded N N N N N Y N Y Y Y N
(PostMan)Json application/json N N N N Y N Y N N N N
.NetCore HttpClient 通過HttpContent內容爲Dictionary鍵值對形式 N N N N N N N Y Y Y N
.NetCore HttpClient 通過HttpContent內容爲Json格式 N N N Y Y Y Y N N N N
.Net HttpWebRequest  Dictionary鍵值對形式 N N N N N N N Y Y Y N
.Net HttpWebRequest  內容爲Json格式 N N N Y Y Y Y N N N N
.Net HttpClient Dictionary鍵值對形式 N N N N N N N Y Y Y N
.Net HttpClient  內容爲Json格式 N N N Y Y Y Y N N N N
.Net Framework下的WebApi接口          
          參數
調用方式
字符串 多個字符參數 [FromBody]特性字符串 實體類 [FromBody]特性實體類 動態類型 [FromBody]特性動態類型
示例 string userid string userid ,string name [FromBody]string userid UserDto dto [FromBody]UserDto dto dynamic dto [FromBody]dynamic dto
(PostMan)通過url傳參 Y Y N N N N N
(PostMan)form-data N N N N N Y N
(PostMan)x-www-from-urlencoded N N N Y Y N N
(PostMan)Json application/json N N N Y Y Y Y
.NetCore HttpClient 通過HttpContent內容爲Dictionary鍵值對形式 N N N Y Y N N
.NetCore HttpClient 通過HttpContent內容爲Json格式 N N N Y Y Y Y
.Net HttpWebRequest  Dictionary鍵值對形式 N N N Y Y N N
.Net HttpWebRequest  內容爲Json格式 N N N Y Y Y Y
.Net HttpClient Dictionary鍵值對形式 N N N Y Y N N
.Net HttpClient  內容爲Json格式 N N N Y Y Y Y

 TIP:Y表示可以接收此類型參數,N表示不能接收此類型參數

以上測試我有通過PostMan工具的各種方式測試,其中通過程序後臺調用的是自己封裝的HttpClient和HttpWebRequest類庫來調用測試,分.Net Framework和.Net Core版本來測試的,下次把測試代碼也附上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章