2016年9月18日 星期日

Hello ASP.NET WEB API 2 (一)

開發一個ASP.NET WEB API並不困難,但您確定我們開發出來的是符合RESTFUL規範嗎?在還沒說明什麼才是符合RESTFUL規範前,我們先來快速簡單建立一個WEB API實際過程。

步驟一:新增一個專案

步驟二:選擇Web API範本,並取一個您要的專案名稱(此例專案取名為HelloWebApi)

步驟三:為了讓此教學單純,我們以靜態泛型的List當成資料來源。
  1. 為了產生泛型List,我們先在Models資料夾中建立一個Product類別,在此檔案中,我們另外再新增一個VoProduct類別,僅含三個屬性(下圖編號3)。
  2. 有了值物件後,我們在Product類別中,新增一個ProductsData靜態方法(下圖編號4),主要目的是產生四筆靜態資料(您亦可由資料庫產生資料),並回傳包含此四筆的 List

步驟四:此驟就開始設計Web Api的重頭戲了。請於Controller目錄夾新增一個 [Web AP控制器空白]

將此Controller取名ProductController


步驟五:新增ProductController後,在此檔案撰寫一個提供所有商品資訊的API。
  • 編號3:每個Controller都是繼承ApiController
  • 編號4:將所有商品資料儲存在 _productList變數中。
  • 編號5:設計一個以Get開頭的GetProducts()方法,用來回傳所有的商品資料。 
將此專案進行編譯,如果編譯過程沒有錯誤,表示我們已經撰寫好一個可提供所有商品資訊的Web API。如何測試我們寫的Web API呢?瀏覽器本身只能有POST和GET的動作,如果要測試其它諸如PUT、PATCH、DELETE等動作,可能就必須藉由JAVASCRIPT撰寫發送和接收結果的程式碼,更重要的是伺服器傳回的狀態碼更沒辦法透過瀏覽器得知。建議如果要測試WEB API可以透過 POSTMAN (下載點) 這套軟體進行測試。

步驟六:手動啟動IIS Express (參考步驟),此例的Port定義為5000

輸入好指令並執行,系統會在此目錄下(即專案目錄)啟動一個IIS Express 伺服器。(啟動後,請勿將此命令提示字元關閉)。


步驟七:開啟POSTMAN軟體。

(1)我們在ProductController類別中所建立的API方法名稱是GetProducts(),Get開頭表示Client端需要使用Get動作才能使用此API,所以我們在POSTMAN選擇GET。
(2)我們剛剛透過命令提示字元啟動一個本機端的IIS Express (埠號5000),所以網址列輸入http://localhost:5000,至於後面為什麼是 /api/product 呢 ? 這是因為預設的Route的設定,我們打開App_Start目錄夾下的WebApiConfig.cs檔案如下:


這邊預設值的設定表示存取API時,都要固定先加上一個/api/,而含有左右大括符{
controller}表示這是變數,這代表是controller的名稱。以此例來說,就是ProductController這個類別名稱的Product。當Client端的URI使用GET動作,且網址輸入的是 /api/Product/的時候,系統會去尋找ProductController類別中,符合無參數且是Get開頭的方法,並且執行此方法。因此在預設的情況下,我們命名的方法名稱已經不是那麼重要。(可透過WebApiConfig.cs設定{action}來指定全名)


至於第三個部分{id},指的就是指系統會尋找符合ProductController類別中,含有一個參數的方法,並且執行此方法。url中的參數只能用在GET方法,如果是複雜型別的參數,就需要使GET以外的動作了(如:POST、DELETE、PUT等等)。
(3) 於POSTMAN選好GET動作、URI也輸入正確後,點選Send按鈕。
(4) 下半部的藍色虛線框是主機Response部分(上半部藍色框是Request),您會發現回傳的Body內容是四筆json格式之商品資料,表示此API如預期般正常執行。
(待續)

沒有留言:

張貼留言