簡(jiǎn)介
對(duì)于.net來(lái)說(shuō),用web api來(lái)構(gòu)建服務(wù)是一個(gè)不錯(cuò)的選擇,都是http請(qǐng)求,調(diào)用簡(jiǎn)單,但是如果真的要在程序中調(diào)用,則還有些工作要做,比如我們需要手寫(xiě)httpClient調(diào)用,并映射Model, 如果服務(wù)少還可以,多了就繁瑣了。
Swagger
關(guān)于Swagger的信息,其他博客已經(jīng)有介紹,這里就不多說(shuō)。 大家可以參考http://chuansong.me/n/322685748559 ,使用Swagger后,可以解決服務(wù)沒(méi)有文檔或者文檔和服務(wù)不同步的問(wèn)題,同時(shí)Swagger自帶的就有模擬請(qǐng)求的功能,所以可以在頁(yè)面上直接測(cè)試接口。 這些不僅對(duì)開(kāi)發(fā),對(duì)測(cè)試同學(xué)也是友好的。
下面是一個(gè)簡(jiǎn)單的Web API,添加注釋
引用swagger后,訪問(wèn)http://XXX/swagger/ui/index(XXX為你的域名),結(jié)果如下,可以看到頁(yè)面上會(huì)顯示你的服務(wù),以及服務(wù)的描述。
點(diǎn)擊具體某個(gè)服務(wù),你可以看到你定義的參數(shù),并可以直接在頁(yè)面上發(fā)起測(cè)試。
AutoRest
有了Swagger后,方便查看服務(wù),接下來(lái)就是如何調(diào)用服務(wù),過(guò)往我們通常會(huì)寫(xiě)一個(gè)HttpUtils的類,里面包含SendGet,SendPost兩個(gè)方法,如果是簡(jiǎn)單參數(shù)還好,但是如果Get請(qǐng)求返回一個(gè)對(duì)象,或者Post的時(shí)候需要發(fā)送一個(gè)對(duì)象,則需要手寫(xiě)這些類進(jìn)行封裝。 這里介紹一個(gè)組件:AutoRest (https://github.com/Azure/AutoRest), 簡(jiǎn)單來(lái)說(shuō),就是一個(gè)EXE工具,可以根據(jù)Swagger的結(jié)構(gòu)生成服務(wù)的客戶端,這個(gè)客戶端可以讓你像調(diào)用本地方法一樣調(diào)用服務(wù),方法內(nèi)部包裝了Http請(qǐng)求。
在Swagger頁(yè)面,你可以點(diǎn)擊Explore按鈕,通過(guò)瀏覽器可以看到這里返回了一個(gè)Json字符串,頁(yè)面也是根據(jù)這個(gè)字符串進(jìn)行的渲染,AutoRest也是根據(jù)這個(gè)結(jié)構(gòu)來(lái)生成調(diào)用類。