前幾節介紹了REST WCF 服務的一些基本的特點,本節說明一下,如何基於HTTP的標準動作來使用REST WCF 服務。由於RESTful服務的架構風格基於HTTP協議,並且其設計原則中明確指出:通過通用的連接器介面來使用資源。對於REST架構風格的服務,主要通過它8個動作中的4個來使用資源,即:GET,POST,PUT,DELETE。
在RESTful 服務中,GET,POST,PUT,DELETE的標準操作如下:
GET:擷取資源
POST:修改資源
PUT:建立資源
DELETE:刪除資源
本節涉及的要點如下:
1、如何定義介面規範,使用戶端通過能通過HTTP協議的標準動作來使用REST WCF資源。
2、用戶端如何通過HTTP標準動作使用使用資源
首先介紹一下開發環境:
VS2008 SP1。由於是基於Framework3.5的平台,所以本節介紹的只是REST WCF 3.5的一些特點。Ddmo結構圖:
1、介面規範的定義:
對REST 架構風格有一些瞭解的同學都知道,在System.ServiceModel.Web程式集中,微軟為我們提供了兩個特性:WebGetAttribute、WebInvokeAttribute.
前幾節也做過一個簡要的介紹,WebGetAttribute通過名稱可以得知,它是用來擷取資源的,所以它使用的HTTP動作是GET。在REST WCF中,其他的幾個動作都是在WebInvokeAttribute中定義的。
REST WCF中,就是通過在WebGetAttribute與WebInvokeAttribute中,通過UriTemplate屬性定義了資源的使用方式。另外還可以通過RequestFormat、ResponseFormat定義用戶端請求時使用的資料格式以及服務端返回給用戶端的資料格式。
在本例中,通過服務契約定義來定義介面規範以及用戶端的使用規範。如示:
註:UriTemplate中類似Student/{name}中的{name}即為所定義方法中所需參數的預留位置。
2、用戶端使用REST WCF 。
2.1使用HTTP GET 動作擷取資源:
string getMsg = client.DownloadString("http://localhost:6012/Student.svc/Student/zhangRest");Console.WriteLine(string.Format("get方法擷取到的學生資訊:{0}", getMsg));
2.2使用HTTP POST 動作修改資源:
string postMsg = client.UploadString("http://localhost:6012/Student.svc/Student/lizhi/0105245687", "POST",string.Empty);Console.WriteLine(string.Format("post方法修改到的學生資訊:{0}", postMsg));
2.3使用HTTP DELETE 動作刪除資源:
string deleteMsg = client.UploadString("http://localhost:6012/Student.svc/Student/zhangRest", "DELETE", string.Empty);Console.WriteLine(string.Format("delete方法刪除到的學生資訊:{0}", deleteMsg));
2.4使用HTTP PUT動作添加資源:
string addMsg = client.UploadString("http://localhost:6012/Student.svc/Student/zhangsan/0102356897", "PUT", string.Empty);Console.WriteLine(string.Format("put方法添加的學生資訊:{0}", addMsg));
四種動作的使用方式如上所示。
在REST WCF中,URI(Uniform Resources Identifier)就是在服務契約中定義通過UriTemplate定義的,而不像在SOA架構下的服務中直接使用方法名。