2012年9月28日 星期五
2012年9月10日 星期一
[UML] 案例圖範例一
今天參考書上畫的案例圖,來做一些筆記:
1. Customer 可以做為 Member 一般化的父角色。 因為Customer連接的所有案例,Member也會用到。
2. Provide Suggestion(顧客意見) 和 Order (下訂單) 如果在未登入的情況下,會<<extend>> 出 Login這個案例。 Order (下訂單) 如果在非會員的情況下,會<<extend>> "Join as a member"案例。
3. Order (下訂單)和Modify member info (修改會員資料) 一定會引發Send confirmed Email這個案例。 所以要使用 <<include>>這個關係。
4. 角色可以是 人, 時間, 系統 ... 等實體或非實體,有點像是觸發事件的Trigger。
[MVC4] 建立第一支Web Api
[MVC4] 建立第一支Web Api
作者 : JB
作者 : JB
1. 請先下載安裝ASP.NET MVC4
http://www.microsoft.com/zh-tw/download/details.aspx?id=30683
(此連結的下載是For Visual Studio 2010)
http://www.microsoft.com/zh-tw/download/details.aspx?id=30683
(此連結的下載是For Visual Studio 2010)
2. 以下以Visaul Studio 2010為範例。
開新專案:
【Web】→【ASP.NET MVC 4 Web Application】

會跳出以下這個畫面,選擇Web API,然後可選擇要不要建立單元測試專案。
開新專案:
【Web】→【ASP.NET MVC 4 Web Application】

會跳出以下這個畫面,選擇Web API,然後可選擇要不要建立單元測試專案。

3. 建立好之後,可看到方案總管,的確跟一般MVC專案一樣有Model, View, Control。 不過因為基本上不會動到View J
4. 打開Control資料夾下面的「ValuesController.cs」
可看到裡面定義了四個Restful Service的方法
可看到裡面定義了四個Restful Service的方法
// GET api/values public IEnumerable< string > Get() { return new string[] { "value1", "value2" }; } // GET api/values/5 public string Get(int id) { return "value"; } // POST api/values public void Post([FromBody]string value) { } // PUT api/values/5 public void Put(int id, [FromBody]string value) { } // DELETE api/values/5 public void Delete(int id) { }
5. 接著我們來看定義routes的地方,開啟App_Start資料夾下面的WebApiConfig.cs
會看到以下的程式碼
會看到以下的程式碼
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute( name: "DefaultApi",
config.Routes.MapHttpRoute( name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
很清楚的可以看到routes定義為 api/{controller}/{id}{controller} : 你的Control名稱{id} : 帶入的值(參數),而id = RouteParameter.Optional 則定義此欄位為非必要。
7. 測試GET方法 …
在網址後面加上 http://localhost:XXXX/api/values
瀏覽器應該會問你要不要下載檔案,這個就是Web API回傳回來的JSON資料,打開這個檔案會看到
["value1","value2"]
下圖是用Fiddler看的結果
備註:如果我們要讓使用者在GET方法時,動態選擇取得的response格式為XML或JSON,做法如下:
打開Global.asax.cs,在Application_Start方法中加入下列紅色的程式碼。
PS.必須參考 using System.Net.Http.Formatting
在網址後面加上 http://localhost:XXXX/api/values
瀏覽器應該會問你要不要下載檔案,這個就是Web API回傳回來的JSON資料,打開這個檔案會看到
["value1","value2"]
下圖是用Fiddler看的結果

備註:如果我們要讓使用者在GET方法時,動態選擇取得的response格式為XML或JSON,做法如下:
打開Global.asax.cs,在Application_Start方法中加入下列紅色的程式碼。
PS.必須參考 using System.Net.Http.Formatting
//設定一個URL的新參數
GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(new QueryStringMapping("json", "true", "application/json"));
//設定一個URL的新參數
GlobalConfiguration.Configuration.Formatters.XmlFormatter.MediaTypeMappings.Add(new QueryStringMapping("xml", "true", "text/xml"));
這兩行表示我們可以在URL中加入json和xml兩個參數,來設定是否開啟json/xml回傳格式。
所以預設回傳json格式的URL可以改打
http://localhost:63435/api/values?id=10&json=true
如果要拿到xml格式,就改打以下網址…
http://localhost:63435/api/values?id=10&xml=true

這兩行表示我們可以在URL中加入json和xml兩個參數,來設定是否開啟json/xml回傳格式。
所以預設回傳json格式的URL可以改打
http://localhost:63435/api/values?id=10&json=true
如果要拿到xml格式,就改打以下網址…
http://localhost:63435/api/values?id=10&xml=true

8. 測試POST方法 …
新增一個類別 CItem,裡面放兩個String變數value1、value2
然後修改 POST函式:
// POST api/values
新增一個類別 CItem,裡面放兩個String變數value1、value2
然後修改 POST函式:
// POST api/values
public CItem Post()
{
CItem myItem = new CItem();
myItem.value1 = "HI";
myItem.value2 = "HELLO";
return myItem;