在ASP.NET WebAPI方法調用中,使用IHttpActionResult
作爲返回類型有什麼意義。
由於這是一個接口,我們如何以界面的形式返回結果?
有人可以解釋這背後的概念嗎?
在此先感謝!webAPI調用中的返回類型
回答
基於該Microsoft ASP.NET文檔,
的IHttpActionResult
接口在網絡API 2.引種本質上,它定義了一個HttpResponseMessage工廠。下面是使用IHttpActionResult接口的一些優點:
- 簡化單元測試您的控制器。
- 將用於創建HTTP響應的通用邏輯移動到單獨的類中。
- 通過隱藏 構建響應的底層細節,使控制器操作的意圖更加清晰。
IHttpActionResult包含一個方法ExecuteAsync,它異步地創建一個HttpResponseMessage實例。
public interface IHttpActionResult
{
Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken);
}
如果一個控制器動作返回IHttpActionResult,網頁API調用ExecuteAsync方法來創建一個HttpResponseMessage。然後它將HttpResponseMessage轉換爲HTTP響應消息。
這裏是IHttpActionResult的簡單implementaton創建一個純文本響應:
public class ValuesController : ApiController
{
public IHttpActionResult Get()
{
return new TextResult("hello", Request);
}
}
及其Respond
:
HTTP/1.1
public class TextResult : IHttpActionResult { string _value; HttpRequestMessage _request; public TextResult(string value, HttpRequestMessage request) { _value = value; _request = request; } public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken) { var response = new HttpResponseMessage() { Content = new StringContent(_value), RequestMessage = _request }; return Task.FromResult(response); } }
在控制器中的另一個示例200 OK Content-Length:5 Content-Type:text/plain; 的charset = UTF-8服務器:Microsoft-IIS/8.0日期:星期一,2014年1月27日 8時53分35秒GMT
你好
我希望這有助於。祝你好運。
感謝您的解釋。這很有幫助。我還有一個疑問。如何返回類型是接口。我的意思是我可以理解返回任何類的字符串,對象,但如何返回接口? –
@AmeyDeshpande你根據這個接口的規則返回一個類型,一個接口包含規則並且基於這些規則你可以返回一個類型。簡單的英語:) – Valkyrie
對不起:(你能詳細說明嗎?沒有得到你想說的。 –
- 1. 的WebAPI返回類型
- 2. 的WebAPI的OData返回複雜類型
- 3. ASP.NET WebApi操作返回類型
- 4. JSON.NET MVC 4 WebApi正確返回類型
- 5. C#,Asp.net geting類型返回對象類型WebApi 2
- 6. 用Java以外的返回類型調用一個非空的返回類型
- 7. 返回類型的回調函數
- 8. 調用泛型方法並調用返回類型的方法
- 9. WebAPI返回XML
- 10. 在$ .post回調中使用文本返回類型的錯誤
- 11. 獲取泛型方法調用的返回類型AspectJ中
- 12. ASP.NET WebApi - 兩種可能的JSON「返回」類型?
- 13. 返回JsonNet類型JSON從的WebAPI在果園
- 14. Java - 返回類型的通用類型
- 15. 可以使用內容協商來控制ASP.NET WebApi中的返回類型嗎?
- 16. ASP.Net WebAPI返回CSS
- 17. asp.net webapi控制器,返回類型實體或HttpResponseMessage
- 18. 返回類型
- 19. 返回類型
- 20. 返回類型
- 21. 返回類型
- 22. 抽象返回類型的BPEL中的Webservice調用
- 23. 泛型類的返回類
- 24. 在Visual Studio中調試WebApi不會返回MVC應用程序
- 25. 調用堆棧中的方法/函數返回類型
- 26. webapi返回的動態JavaScript
- 27. 返回JPEG圖像的WebAPI
- 28. 模板參數類返回的函數調用類型
- 29. 使用泛型的返回類型
- 30. Java中的整型返回類型
這裏有一個很好的expilanation; http://stackoverflow.com/questions/21758615/why-should-i-use-ihttpactionresult-instead-of-httpresponsemessage 查找Behzad Bahmanyar的職位 – Mehmet
這只是一個更新到以前的標準使用'HttpResponseMessage'儘管也沒有任何東西阻止你繼續返回一個對象本身。像「HttpResponseMessage」和「IHttpActionResult」這樣的類型只是簡單地給了你對HTTP響應包裝器的更多控制權,而不僅僅是返回數據和拋出異常。我想這對我而言並不是很清楚,具體是你在問什麼。 – David
***你的問題基本上是[爲什麼接口有用?](http://softwareengineering.stackexchange.com/questions/108240/why-are-interfaces-useful)。*** – Win