Web api接口返回值類型詳解


 

Web api接口返回值類型詳解

Web api的接口返回值主要有四中類型

  1. Void無返回值
  2. IHttpActionResult
  3. HttpResponseMessage
  4. 自定義類型

 

 

一、     Void 返回值

方法是使用void申明的方法,在success方法里面得不到返回值,並且會返回http狀態碼204,告訴客戶端此請求沒有返回值。

 

二 IHttpActionResult

IHttpActionResult類型是WebApi里面比較重要的一種返回值類型。

 

1. Json<T>(T content)

  

  在MVC中請求數據的接口返回值類型大部分使用的是JsonResult,

在webapi中我們定義的返回值類型是IHttpActionResult類型,直接返回Json<T>(T content)

我們將Json 轉到定義看看:protected internal JsonResult<T> Json<T>(T content); 

繼續將JsonResult<T>轉到定義: public class JsonResult<T>:IHttpAciontResult

原來JsonResult<T>是實現了IHttpActionResult接口的

 

實體類可以直接傳遞

[HttpPost]

        public IHttpActionResult  GetStudent(List<Student> stu) {

 

 

            List<Student>  studentList = stu;

            //return stu[0].Name;

            return Json<List<Student>>(studentList);

 

        }

匿名類型,我們很多時候返回前端的對象都沒有對應的實體來對應,我們要返回就在Json<T><T content>必須要傳一個對應的泛型類型。如果是匿名類型這里肯定不好傳。還好有我們的object類型,可以通過dynamic

 

2.  Ok()、Ok<T><T content>

 

除了Json<T>(T content),在ApiController里面還有另一個比較常用的方法:Ok().

 

如果返回Ok(),就表示不同客戶端返回任何信息,只告訴客戶端請求成功。

除了Ok()之外,還有另一個重載Ok<T>(T Content)

 

這種用法和Json<T>(T content)比較類似,如果你非要問這兩者有什么區別,或者說怎么選擇兩者。那么我的理解是如果是返回實體或者實體集合,建議使用Json<T>(T content),如果是返回基礎類型(如int、string等),使用Ok<T>(T content)。

 

3.NotFound()

 

當需要向客戶端返回找不到記錄時,有時需要NotFound()方法

 

NotFound()方法會返回一個404的錯誤到客戶端。

 

4、其他

Content<T>(HttpStatusCode statusCode, T value)

向客戶端返回值和http狀態碼。

 

BadRequest()

向客戶端返回400的http錯誤。

 

Redirect(string location)

將請求重定向到其他地方。

三、HttpResponseMessage

  在上文自定義IHttpActionResult返回類型的時候,提到過HttpResponseMessage這個對象。它表示向客戶端返回一個http響應的消息對象(包含http狀態碼和需要返回客戶端消息)。獨特的使用場景:需要向客戶端返回HttpResponse時就要用到這個對象。已導出為例子,將導出的excel文件輸出到客戶端瀏覽器,webapi的服務端需要向web的客戶端輸出文件流,這個時候一般的IhttpActionResult對象不方便解決這個問題,於是HttpReponseMessage派上了用場。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM