[Web API] 初探 Web API 筆記

最近發現 Web API 還蠻火紅的,而身為一個軟體界的魯蛇,深知不可不繼續學習所以打算自己也來嘗試看看,那 Web API 是什麼呢? 隨著新版 .Net Framework 4.5 推出,微軟也發佈了 Web API 網路服務架構,Web API 是 Apache License 2.0 授權的微軟開源代碼項目,我們可以在 CodePlex 看到相關代碼,REST 是一種原則也是一種風格由 Roy Thomas Fielding 博士在一篇論文中提出,而 Web API 就是參考此原則而產生的新網路服務架構,符合 REST 原則的服務也可以稱為 RESTful,所以要瞭解 Web API 之前最好先去瞭解一下什麼是 REST 與 RESTful。

前言


  最近發現 Web API 還蠻火紅的,而身為一個軟體界的魯蛇,深知不可不繼續學習所以打算自己也來嘗試看看,那 Web API 是什麼呢? 隨著新版 .Net Framework 4.5 推出,微軟也發佈了 Web API HTTP 服務架構,Web API 是 Apache License 2.0 授權的微軟開源代碼項目,我們可以在 CodePlex 看到相關代碼。

 

  REST 是一種原則也是一種風格由 Roy Thomas Fielding 博士在一篇論文中提出,而 Web API 就是參考此原則而產生的新網路服務架構,符合 REST 原則的服務也可以稱為 RESTful Service,所以要瞭解 Web API 之前最好先去瞭解一下什麼是 REST 與 RESTful。

 

REST


  REST (Representational State Transfer) 中文可稱「表徵狀態轉移」,光看這個名稱還真的有點難以理解到底是做啥的,這裡所謂的表徵應該意旨於 HTTP 的 URI,即用戶端透過 URI 的變換而改變了服務端所應響應的狀態及內容。

 

舉例個例子來看看:

URI 說明
http://api.service/products/ 此 URI 代表取得所有產品項目
http://api.service/products?c=pc 此 URI 代表取得PC類別產品項目
http://api.service/products/17 此 URI 代表取得指定編號17的產品詳細資料
 

  從以上範例可以發現透過不同的 URI 將可以取得不同資料,而這些 URI 其實就代表著「資源 (Resource)」也就是表徵,當使用的表徵不同時,就表示服務器將轉換不同狀態的處理做法,這就是所謂的「狀態轉移」,這樣說應該就能理解「表徵狀態轉移」的意思了。

 

  當然以上這些動作我們需要透過 HTTP 動詞來處理,關於 HTTP 動詞可參考 w3c Method Definitions,在 REST 中基本上定義了四種 HTTP 動詞,分為 GET、POST、PUT、DELETE,其動詞就如同要對資料進行 CRUD 處理那樣。(詳細可以參考 維基 REST, 什麼是REST跟RESTful?RESTful 服務介紹)

 

為何使用 Web API


  .NET 已經提供了 WCF、Web Service 的服務了,那為何還要再多搞一個 ASP.NET Web API 呢?  Web API 是結合了 WCF Web API 與 ASP.NET MVC 而成的結晶,在使用上因為使用 Web API 相較於 WCF、Web Service 輕量化並且能夠提供跨平台高相容性,固可以做為當需要使用 HTTP 服務時的首選。

 

  而 WCF、Web Service 也並非不可使用而是要看情況使用,WCF、Web Service 使用 SOAP 標準且傳輸的皆以 XML 格式傳遞,使用上更需要加入 Web Reference 方式使用,因而較為繁瑣且對於行動裝置較不友善,當非以 HTTP 服務為主或需要更嚴謹的情況時還是可以使用 WCF 或 Web Service 作為解決方案。

 

  相較於 Web API 來說,使用上 WCF、Web Service 往往造成內容不易辨識與傳送資料過於肥大,而 Web API 提供了 JSON/XML 兩種傳輸格式可選擇並且透過 URI 或再搭配 OData 時,即可以更優雅的方式透過 GET、POST、PUT、DELETE 進行操作,對於網站、應用程式、行動裝置上都可以使用 HTTP 的操作方式簡單快速的取得資源。

 

  Web API 擁有那些特性呢?

  1. 使用 URL 路由機制
  2. 基於 MVC 架構的開發方式,但是不包含 View
  3. 能夠使用 Cache,緩存資源減少負擔加快反應的速度
  4. 於 HttpWebRequest  能夠使用強型別列舉
  5. 支援 JSON/XML 輸出格式
  6. 透過內建支援,可以使用依賴注入(IoC)

 

  當然可能還有其他特色是沒有列出的,待更深入的瞭解後我會再繼續補充,而實際上我們可以使用 .Net 4.5 的新功能 HttpClient 或 Ajax 進行操作,相關使用方式紀錄將於之後的文章的撰寫,以上為初次接觸之筆記。

 

Visual Studio 2010 使用 Web API


  因 Web API 是基於 .Net Framework 4.5 推出,而 Visual Studio 2010 預設是沒有支援的,所以當要在 VS 2010 使用 Web API 時則需要另外安裝 ASP.NET MVC 4 套件,下載位置: http://www.asp.net/mvc/mvc4 。

 

Fiddler 監測封包的工具


  Web API 是沒有畫面的服務所以只會有資料的往來,當需要進行測試時我們可以使用 Fiddler 此工具來進行測試,其下載位置為 fiddler2.com 而操作說明可以參考此文 Fiddler 教程

 

參考資料


維基 REST

什麼是REST跟RESTful?

RESTful 服務介紹

Implementing CORS support in ASP.NET Web APIs

Your First ASP.NET Web API (C#)

[ASP.NET MVC] ASP.NET Web API (1) - 技術概觀

RESTful探索1-RESTful Web Service on ASP.NET 3.5 計劃

ASP.NET WEB API 心得筆記 (1)

(最更更新日期:2013/05/30. 修正語意內容)

 

 


以上文章敘述如有錯誤及觀念不正確,請不吝嗇指教
如有侵權內容也請您與我反應~謝謝您 :)