進(jìn)階之路—WebAPI的布置以及調(diào)用

之前兩篇文章講解了 Web Service 和 WCF 的部署調(diào)用,本章我們主要來(lái)研究一下 WebAPI 的部署調(diào)用,其實(shí)相對(duì)于其他倆中技術(shù), WebAPI 更加另類,為什么這么說(shuō)呢,因?yàn)橹拔覀冊(cè)趯W(xué)習(xí)無(wú)論是 Web Service ,還是 WCF 的時(shí)候,這兩種技術(shù)在遠(yuǎn)程調(diào)用的時(shí)候,都需要添加服務(wù)引用才能調(diào)用得到,但是 WebAPI 則不同,對(duì)比之前兩種技術(shù),WebAPI 更接近于 ASP.net MVC 這種框架,雖然說(shuō) WebAPI 可以寄存在控制臺(tái)程序,甚至 Winform 程序中,但是 WebAPI 本質(zhì)就是一個(gè)支持謂詞的 HTTP 請(qǐng)求。

WebAPI:本質(zhì)是支持謂詞的 HTTP 請(qǐng)求,類似于 MVC 。

接下來(lái)我們從頭來(lái)一遍,看看 WebAPI 到底是什么東西。首先,還是之前的那個(gè)項(xiàng)目,我們之前在建立項(xiàng)目選擇的時(shí)候就已經(jīng)創(chuàng)建了含有 WebAPI 的 MVC 框架,所以在項(xiàng)目中會(huì)自動(dòng)生成一個(gè)文件


WebAPI自動(dòng)生成的配置文件

熟悉 MVC 框架的朋友可能會(huì)覺(jué)得眼熟,其實(shí)現(xiàn)在很多公司在建立 MVC 項(xiàng)目的時(shí)候都已經(jīng)直接創(chuàng)建含有 WebAPI 的 MVC 項(xiàng)目了。


詳細(xì)代碼

從這個(gè)自動(dòng)生成的文件中,我們可以看出跟 MVC 的路由配置很相像,上圖中第一段代碼是我自定義的,地下那段代碼是自動(dòng)生成的,至于為什么要自定義,這個(gè)還是看個(gè)人愛(ài)好,因?yàn)樯厦娴哪J(rèn)格式更加符合 RESTful 風(fēng)格,而底下自動(dòng)生成的代碼則是拋棄了 action 使用謂詞的方式自動(dòng)檢索控制器里面的方法,但是如果出現(xiàn)方法名稱不規(guī)范的時(shí)候就會(huì)出現(xiàn)問(wèn)題。

接下來(lái),我們新建一個(gè)控制器,并在控制器當(dāng)中寫(xiě)一個(gè)簡(jiǎn)單的 Get 方法


新建的Controller代碼

方法本身沒(méi)有什么特別,但是需要注意的是,這個(gè)控制器是需要繼承自 ApiController 這個(gè)類的,而一般的 Controller 責(zé)集成的是 Controller 這個(gè)類。接下來(lái),我們就算是部署成功了,接下來(lái)我們來(lái)聊一聊什么是謂詞。

所謂的謂詞,就是指我們?cè)谡{(diào)用請(qǐng)求時(shí)候的方法,這點(diǎn)大家都很了解,無(wú)論是使用 Ajax 還是正常提交請(qǐng)求,都會(huì)涉及到 get , post 之類的方法,而在 WebAPI ,默認(rèn)的路由匹配也是通過(guò)這種謂詞的形式,舉個(gè)例子,如果我們?cè)谀硞€(gè) Controller 中定義某個(gè)方法,取名為 GetUser ,那么此時(shí)對(duì)于默認(rèn)路由來(lái)講也是可以匹配到的,,這就有些奇怪了,為什么配置了 { action }和沒(méi)有配置的結(jié)果都是一樣的呢,其實(shí)這就是 .net 常說(shuō)的約定大于配置,默認(rèn)的路由匹配請(qǐng)求的方式是:在找到相應(yīng)的 Contorller ,之后在根據(jù)你提交的路徑中是否出現(xiàn) Get 為首字母的方法,這樣就會(huì)跳轉(zhuǎn)過(guò)去。同樣也適用于 post , delete, put 等方法。

接下來(lái)我們還要說(shuō)一個(gè)特性 ?[ HttpGet ]

[ HttpGet ]:該特性用來(lái)表示 Contorller 中的方法,表示了該特性的方法只能以 Get 方式請(qǐng)求到。

同樣的,也有對(duì)應(yīng)其他請(qǐng)求的特性。

接下來(lái)就是通過(guò)遠(yuǎn)程控制臺(tái)調(diào)用我們之前寫(xiě)的這個(gè)方法了,在 WebAPI 中,遠(yuǎn)程調(diào)用我們寫(xiě)好的方法有些不一樣,他不需要像在 Web Service 或是 WCF 中添加服務(wù)引用,因?yàn)?WebAPI 本質(zhì)上是一個(gè) HTTP 請(qǐng)求,那么我們只需要在調(diào)用端寫(xiě)好地址,直接請(qǐng)求就可以了。



使用HttpClient的代碼

上圖中我是使用 HttpClient 的方法獲取的,也可以使用 HttpWebRequest 的方法調(diào)用



使用HttpWebRequest方法的代碼

至此,就可以在控制臺(tái)程序上面調(diào)用到遠(yuǎn)程服務(wù)的代碼了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容