第十一篇:REST調(diào)用
創(chuàng)新互聯(lián)科技有限公司專(zhuān)業(yè)互聯(lián)網(wǎng)基礎(chǔ)服務(wù)商,為您提供內(nèi)江服務(wù)器托管,高防物理服務(wù)器租用,成都IDC機(jī)房托管,成都主機(jī)托管等互聯(lián)網(wǎng)服務(wù)。上篇寫(xiě)的是Ajax調(diào)用WCF,今天寫(xiě)一篇如何以REST方式調(diào)用WCF服務(wù)。不知道REST是什么的同學(xué),可以去google一下。對(duì)某些類(lèi)型的應(yīng)用,REST還是相當(dāng)不錯(cuò)的方式,所以專(zhuān)門(mén)寫(xiě)一篇來(lái)說(shuō)明一下開(kāi)發(fā)方法。
老規(guī)矩,上代碼,直接在代碼注釋里講解。
1、服務(wù)端:
服務(wù)契約,我們定義CRUD4個(gè)方法(增查改刪),對(duì)應(yīng)HTTP METHOD分別為PUT/GET/POST/DELETE:
- using
- using
- using//這個(gè)命名空間要求引入System.ServiceModel.Web.dll
- namespace
- "WCF.Demo"
- publicinterface
- //WebInvoke中標(biāo)明REST的相關(guān)屬性,以這個(gè)方法為例,調(diào)用的Url是 ..../Data/key/data,HTTP方法是PUT,響應(yīng)為Json格式(也可以換成xml)
- //這樣如果客戶(hù)端用PUT方法訪問(wèn) ..../Data/1/100,就會(huì)映射到CreateData方法上來(lái),并且傳入key=1,data=100
- "Data/{key}/{data}""PUT"
- voidstringstring
- "Data/{key}""GET"
- stringstring
- "Data/{key}/{data}""POST"
- voidstringstring
- "Data/{key}""DELETE"
- voidstring
然后是實(shí)現(xiàn)類(lèi),這個(gè)簡(jiǎn)單,沒(méi)什么可說(shuō)的。
- using
- using
- using
- namespace
- //這個(gè)例子中用了Single Instance模式,這樣m_DataDict的值才能保留住
- publicclass
- privatestringstringnewstringstring
- publicvoidstringstring
- publicstringstring
- return"NOT FOUND"
- publicvoidstringstring
- publicvoidstring
配置文件最關(guān)鍵了,注意里面綠色的注釋部分:
- <?xmlversion"1.0"encoding"utf-8"?>
- <configuration>
- <system.serviceModel>
- <services>
- <servicename"Server.DataProvider">
- <!--必須使用webHttpBinding,而且要定義此endpoint的behaviorConfiguration(見(jiàn)后)-->
- <endpointaddress""binding"webHttpBinding"contract"Server.IData"behaviorConfiguration"restBehavior"/>
- <host>
- <baseAddresses>
- <addbaseAddress"http://localhost:8080/wcf"/>
- </baseAddresses>
- </host>
- </service>
- </services>
- <behaviors>
- <!--定義endpoint的behavior,webHttp節(jié)點(diǎn)表示啟用web方式訪問(wèn),這對(duì)REST是非常關(guān)鍵的-->
- <endpointBehaviors>
- <behaviorname"restBehavior">
- <webHttp/>
- </behavior>
- </endpointBehaviors>
- </behaviors>
- </system.serviceModel>
- </configuration>
最后發(fā)布服務(wù),沒(méi)什么特殊的,和以前一樣:
- using
- using
- namespace
- class
- staticvoidstring
- usingnewtypeof
- "Running ..."
這個(gè)服務(wù)端沒(méi)有用IIS做HOST,直接用自己的進(jìn)程做的宿主(當(dāng)然了,本質(zhì)還是http.sys在工作)。
2、客戶(hù)端
我們這回要用REST形式訪問(wèn)服務(wù)端,所以不是普通意義上的WCF客戶(hù)端了,再也用不著那么麻煩的寫(xiě)配置文件創(chuàng)建Channel或者代理了。
- using
- using
- namespace
- class
- staticvoidstring
- //用一個(gè)WebClient就可以搞定了
- new
- //以PUT方式訪問(wèn)Data/1/100,會(huì)映射到服務(wù)端的CreateData("1", "100")
- "http://localhost:8080/wcf/Data/1/100""PUT"string
- //以GET方式訪問(wèn)Data/1,會(huì)映射到服務(wù)端的RetrieveData("1"),應(yīng)該返回"100"
- "http://localhost:8080/wcf/Data/1"
- //以POST方式訪問(wèn)Data/1/200,會(huì)映射到服務(wù)端的UpdateData("1", "200")
- "http://localhost:8080/wcf/Data/1/200""POST"string
- //再GET一次,應(yīng)該返回"200"
- "http://localhost:8080/wcf/Data/1"
- //以DELETE方式訪問(wèn)Data/1,會(huì)映射到服務(wù)端的DeleteData("1")
- "http://localhost:8080/wcf/Data/1""DELETE"string
- //再GET一次,應(yīng)該返回"NOT FOUND"
- "http://localhost:8080/wcf/Data/1"
OK,運(yùn)行一下客戶(hù)端,返回如下,和預(yù)期一致:
需要補(bǔ)充一下,如果用IIS做HOST,比如DataService.svc.cs是實(shí)現(xiàn)類(lèi),一定要在DataService.svc中加上Factory,如下:
- <%@ ServiceHost Language="C#""true""WebServer.DataService""DataService.svc.cs""System.ServiceModel.Activation.WebServiceHostFactory"
表明不是使用默認(rèn)的ServiceHostFactory,而是適應(yīng)WEB HTTP開(kāi)發(fā)的WebServiceHostFactory。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)名稱(chēng):WCF簡(jiǎn)單教程(11)REST調(diào)用-創(chuàng)新互聯(lián)
本文鏈接:http://muchs.cn/article28/dpgojp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、外貿(mào)建站、定制開(kāi)發(fā)、App開(kāi)發(fā)、軟件開(kāi)發(fā)、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
全網(wǎng)營(yíng)銷(xiāo)推廣知識(shí)