ASP.NET Web API 心得筆記 (6) 例外處理(Exception Handling)

HttpResponseException

如果 Web API 的 controller 擲出一個例外(exception),會發生什麼事?預設下,最常是會把例外轉譯為一個 HTTP 狀態碼 500 (Internal Server Error) 回應。

HttpResponseException 型別是一個特別情況。你能指定此例外的建構式,這個例外能回傳任何 HTTP 狀態碼。例如,下面例子,如果 id 參數不存在,會回傳 404 (Not Found) 狀態碼。


Function GetContact(id As Integer) As Contact
    Dim contact As Contact = _repository.GetContactById(id)
    If contact Is Nothing Then
        Throw New HttpResponseException(System.Net.HttpStatusCode.NotFound)
    End If
    Return contact
End Function

想要對回應取得更多控制,你也能建構回應的訊息 (HttpResponseMessage 型別),然後包含在 HttpResponseException 裡:


Function GetContact(id As Integer) As Contact
    Dim contact As Contact = _repository.GetContactById(id)
    If contact Is Nothing Then
        ' Throw New HttpResponseException(System.Net.HttpStatusCode.NotFound)
        Dim msg As New HttpResponseMessage(System.Net.HttpStatusCode.NotFound)
        msg.Content = New StringContent(
            String.Format("無法找到連絡人ID = {0}", id))
        msg.ReasonPhrase = "未發現連絡人"
        Throw New HttpResponseException(msg)
    End If
    Return contact
End Function

ASP.NET Web API 心得筆記 (5) 分頁和查詢(Paging and Querying)

Open Data Protocal (OData) 指定查詢字串參數讓 Client 能使用它去排序與過濾結果。

Web API 提供以下內建支援 OData 查詢參數:


Web API 提供支援 OData 查詢參數
查詢參數說明範例
$filter選擇與布林運算式相符的項目http://localhost:port/api/contacts?$filter=substringof(Name, 'Ed') eq true
$orderby指定的屬性來排序結果http://localhost:port/api/contacts?$orderby=Name
$skip跳過前 n 筆元素http://localhost:port/api/contacts?$skip=2
$top傳回前 n 筆元素http://localhost:port/api/contacts?$top=10

$top 如果與 $orderby 一起使用,會先排序,然後再取得前 n 筆元素以回傳。

Microsoft MVP Open Day 10 週年 - 明年還要來

這是我當選 Microsoft MVP (微軟最有價值專家) 之後,第一次參加微軟大型活動,這次活動的全稱為「Microsoft MVP Open Day 10 週年 - 微軟最有價值專家在台灣光輝十年」,活動地點在很美的"南方莊園渡假飯店"。

由於第一次參加,前一晚異常興奮,為了第二天能有戰力,還請出安眠藥來幫忙進行休眠模式。不過,還是早早六點就起床了。八點不到,全家人護送我去會場。(我走西濱至會場約 30 km)

會場篇

落水螻蛄
圖一:落水螻蛄

我應該是第一個到會場,因為還有時間,就帶婆婆與小孩到處走走看看環境,在水池場裡發現一隻落水的螻蛄,應該是我這輩子看過最大隻的螻蛄,抓它起來時還有點怕怕的,兩個小鬼看的很高興。


不知名昆蟲
圖二:不知名昆蟲

這是第二隻,不過它身世可憐,被我家的老二一聲"踩",就結束一生。以上就是短短的"南方莊園渡假飯店昆蟲救生記",謝謝。
回主題。

Microsoft MVP Open Day 10 週年立牌
圖三:Microsoft MVP Open Day 10 週年立牌

飯店門口立著大大 Microsoft MVP Open Day 10週年立牌,最高興當然是能前去參加。


MVP 名牌
圖四:MVP 名牌

領到名牌,除了進出會場使用外,最重要的自我介紹時使用,MVP 們平常都忙於工作,出現於網路時又都是使用匿稱,介紹自己 Bruce 或 KKBruce 知道的人還比較多一些 XD!


MVP 棒棒牆
圖五:MVP 棒棒牆

一進會場,滿滿一整面的 MVP 掛在櫻花上,立刻成為大家的焦點。全台灣優秀的 MVP 不只這些。(註:還有一位香港的 MVP 特地飛過來參加)

為什麼動物都被關在動物園

圖片來源:網路
我們常說要會「舉一反三」,但對問題特別多的寶貝們,我時常有被問倒的準備。他們提出的問題包羅萬象,也反應出孩子與成年人的差異。

我喜歡她們這樣,保持好奇心,她們問問題,不了解、不清楚,我就去找答案。

標題「為什麼動物都被關在動物園」,是我孩子在放學途中車上問我的問題,我東想西想,實在想不出個好答案,所以就把腦筋動到「動物園」上,讓「動物園」來回答動物園的問題,以下是臺北市立動物園的回答:

讓你的 Android 智慧手機取得超過 100GB 雲端硬碟空間


智慧手機(Smart Phone)讓我們盡情的把工作帶回家把資料隨身化,不管是收發 Email、聽音樂、聊天、記帳、看電子書、記事、玩遊戲 … 我個人是認為它反正就是一台能撥打電話的小電腦

我的第一支 Smart Phone 是 Android 2.3.4 作業系統、4.3吋 … 雖然買的時候,店家送我一張 2GB mini SD Card,送的店長笑著說:我自己都送的都有點不好意思。後來還是自己買了張 AData 32GB microSDHC (Class10) 來升級。不過說實說,資料放在手機裡還真不放心,尤其是我家眾美女的圖或影片,如果不見了,我會很傷心的。

手機可擴充的,最高就是加 一張 32GB 的 SD 卡,不能擴充的就看智慧手機本身是 2GB, 4GB, 8GB, 16GB,我好像還沒看到有內建 32GB。再來,想備份資料就一定要開電腦,接上傳輸線,開檔案總管 … 等一堆動作。

這時候,雲端硬碟 (或稱:雲端空間、網路硬碟 …) 就是很不錯的選擇。

PC, MAC, Linux <--> Cloud Drive <--> Smart Phone, Pad