原文更新日期:2014.02.03
asp.net web api 2 入門教學:
這篇教程描述了 asp.net web api 是怎樣將controller的action返回值轉變為http響應值的。
乙個 web api controller 的 action 可以返回以下任何一種型別
4.一些其他的型別
web api 會根據返回型別的不同來使用不同的機制來建立http響應。
返回型別 web api 響應
void 返回 http 204(no content)
httpresponsemessage 直接轉換為http response message.
ihttpactionresult 呼叫executeasync來建立乙個httpresponsemessage,然後將它轉換為乙個http response message.
其他型別 將序列化後的返回值寫入響應的response body;返回http 200(ok)
如果返回值是void,web api 將會直接返回乙個空的http響應,狀態碼是204(no content).
示例controller:
public class valuescontroller : apicontroller
}
http 響應為:
date: mon, 27 jan 2014 02:13:26 gmt如果action返回的是乙個 httpresponsemessage ,web api 將會將返回值直接轉化為乙個http response message, 並使用 httpresponsemessage 類的屬性來填充響應結果。
這種返回型別可以讓你更好的控制response message。舉個例子,下面的這個controller 的 action 設定了 cache-control header。
public class valuescontroller : apicontroller
; return response;
} }
響應為:
hello如果你將乙個域模型做為引數傳遞給 createresponse 方法,web api會使用media formatter(
來將序列化後的model寫入響應的body。
web api 在請求中使用 accept 來選擇formatter。更多資訊可以看
ihttpactionresult 介面是 web api 2新加的。從本質上說,它定義了乙個httpresponsemessage 的工廠。使用該介面有以下好處:
簡化controller的單元測試
為 建立不同的http響應 新增相同的邏輯
通過隱藏構造響應時的低階的詳細資訊來使 controller action 的目的更清晰。
ihttpactionresult 僅包含了1個方法:executeasync。它能非同步的建立乙個 httpresponsemessage 例項。
如果乙個controller的action返回型別是ihttpactionresult, web api 會呼叫executeasync 來建立乙個 httpresponsemessage,然後將它轉化為乙個 http response message。
下面是乙個簡單的、建立乙個清晰的文字響應的ihttpactionresult 的實現:
}}示例 controller action:
public class valuescontroller : apicontroller
}
響應為:
hello更常用的是使用 system.web.http.results 下的 ihttpactionresult 的實現。apicontroller 類定義了一些返回這些內建型別的方法。
在下面的例子中,如果請求中不含有乙個已知的 product id,對應 controller 將會呼叫 apicontroller.notfound來建立乙個http404(not found)響應;否則,controller會呼叫 apicontroller.ok 來返回乙個http200(ok),並將指定的product包含在響應中。
}對於所有的其他的返回型別, web api 使用 media formatter 將返回值序列化。web api 會將序列化後的值寫入響應body,響應的狀態碼為200(ok)。
public class productscontroller : apicontroller
}
這種返回值的缺點之一就是不能直接返回乙個error 狀態碼,比如404.然而,你可以通過丟擲httpresponseexception 來返回錯誤碼.更多資訊請看:
web api 在請求中使用 accept 來選擇formatter。更多資訊可以看
示例請求:
host: localhost:24127示例響應:
在webform專案中使用web api:
關於 Web Api 2 認證與授權
認證與授權 認證與授權,authentication and authorize,這個是兩個不同的事。認證是對訪問身份進行確認,如驗證使用者名稱和密碼,而授權是在認證之後,判斷是否具有許可權進行某操作,如 authorize 屬性。簡單說,他們之間先後順序是先認證,再授權。web api 的客戶端可...
Web Api 2 介面API文件美化
使用用第三方提供的swgger ui 幫助提高 web api 介面列表的閱讀性,並且可以在頁面中測試服務介面。執行程式如下 注意 在ie中必須輸入紅色部分。並且可以對方法進行測試。在開發web api 是可以寫清楚注釋,並且在文件中可以全部的顯示出來。在工程中處了安裝swashbuckle 以外,...
Action2中的方法萬用字元
這裡的表示接收前面action裡通過萬用字元傳來的值,例如你配置的是 然後呼叫 editcrud.action,則method裡獲得的值是edit,將會呼叫這個action裡面的 edit方法 附 action中的方法萬用字元 有些時候對action中方法的呼叫滿足一定的規律,例如edit acti...