[Web API]基本CRUD 程式碼產生器(Scaffold)

Scaffolding是一種ASP.NET MVC程式碼產生器,最近要建立一組具備 RESTful的Http服務程式,讓同事從手機App呼叫Web API 對SQL Table操作CRUD功能,意外發現Scaffolding從Visual Studio2013也支援Web API程式碼產生

 

 

Scaffold是鷹架、支架的意思,Scaffold可以幫我們迅速產生具備CRUD的MVC、Web API及Web Form程式碼。

 

產生MVC程式碼的練習之前上課使用過幾次,今天筆記Web API 基本CRUD程式碼自動產生,Web Form部分參考vivi老師這篇

步驟

  • 1.MS SQL資料庫中建立測試資料庫
  • 2.新增EF Data Model
  • 3.新增Scaffold項目(Web API)
  • 4.使用瀏覽器測試Web API
  • 5.使用Postman測試Web API

 

1.首先要有SQL Server資料表,待會要用DataBase First方式產生Data Model。

USE TEMPDB
CREATE TABLE LaLigaClub (
	Id int identity(1,1) Primary key
	,NAME VARCHAR(30)
	,win INT
	,draw INT
	,lose INT
	,Goal INT
	,Pts INT
	) 

insert into LaLigaClub 
values
('Barcelona',29,4,5,112,91),
('Real Madird',28,6,4,110,90),
('Atletico Madrid',28,4,6,63,88),
('Villarreal',18,10,10,44,64),
('Sevilla',14,10,14,51,52),
('Granada',14,10,14,51,52)

 

2.準備Entity Framework Data Model

打開ASP.NET MVC專案, 在Model資料夾上按右鍵 >加入 > 新增項目

選取資料頁簽,項目選擇ADO.NET實體資料模型,名稱輸入LaLigaClubModel

跳出實體資料模型精靈,選來自資料庫的EF Designer模型

新增連接

 

選取模型中包含的資料庫物件

跳出ER-Diagram畫面

3.新增Scaffold項目(Web API)

打開ASP.NET MVC專案,先將剛剛的專案建置成功。

Controller資料夾上按右鍵 >加入 > 新增Scaffold項目

新增Scaffold項目,選 具有動作、使用Entity Framework的Web API 2控制器

加入控制器,輸入名稱LaLigaClubController
 

 

4.瀏覽器測試Web API

以Chrome執行API網址 (Website/API/LaLigaClubs/1),回傳XML字串在畫面中。

以IE(Edge)執行API網址 (Website/API/LaLigaClubs/1),回傳JSON字串在畫面中。

 

參考保哥的文章,在Global.asax Application_Start中加入

GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();

 

重新測試chrome,就回傳JSON字串在畫面中了。

5.用 Postman測試Web API

安裝Postman

Chrome瀏覽器開啟以下網址

https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop

啟動Postman應用程式,然後直接用Google帳號登入

 

查詢 Http Get

開啟的畫面,輸入測試網址website/API/LaLigaClubs,然後送出

輸入查詢條件id=1,然後送出

新增Http Post

將Http Verb動詞改為POST,然後在Body中格式選JSON(application/json)

輸入json format的資料,然後送出

{"NAME":"Malaga","win":29,"draw":4,"lose":5,"Goal":200,"Pts":100}
 

查詢資料庫,多了1筆馬拉加(Malaga)

修改 Http PUT

網址列輸入查詢條件id=7,將Http Verb動詞改為PUT,然後在Body中格式選JSON(application/json)

輸入json format的資料(goal進球數改為200),然後送出

資料庫中的進球數也被更新為200球。

刪除 HTTP Delete

 

網址列輸入查詢條件id=7,將Http Verb動詞改為DELETE,然後按下Send按鈕。

陽光海岸的馬拉加(Malaga)消失了!

小結:

  • SQL Table要有PK,不然EF Model會視為唯讀資料表而無法執行Create/Update/Delete。
  • Scaffolding也支援Web Form,但目前只有到Visual Studio 2013

 

威爾斯留著大英國協最後的希望

 

 

參考:

ASP.NET Web API

Enabling CRUD Operations in ASP.NET Web API 1

如何讓 ASP.NET Web API 無論任何要求都回應 JSON 格式

好用的Web API Test Client