WebApi之接口返回值的四种类型

HDL语言及源代码

6人已加入

描述

Webapi的接口返回值主要有四种类型

void无返回值

IHttpActionResult

HttpResponseMessage

自定义类型

void无返回值

大家都知道void声明的是一个无返回值的方法,声明一个api控制器方法,例如:

webapi

使用postman,测试接口:

 

webapi


可以看到,void声明的接口,在请求成功的时候得不到返回值,而且会返回http的状态码为204,表示没有返回值。

 

IHttpActionResult

IHttpActionResult是WebApi最常用的一种返回值类型,常用的方式有:Json(T content)、Ok()、 Ok(T content)、NotFound()、Content(HttpStatusCode statusCode, T value)、BadRequest()、Redirect(string location)等

Json(T content)

在WebApi的ApiController这个抽象类里面,为我们封装了Json(T content)这个方法,它的用法和MVC里面的JsonResult基本类似。

webapi

 

webapi

 

为什么可以返回 Json(T content)呢,转到Json(T content)的定义,发现它返回的是JsonResult对象

webapi

 

再转到JsonResult的定义,发现它实现了IHttpActionResult接口

webapi

 

当然也可以使用dynamic来返回一个对象

webapi

 

webapi

Ok()、 Ok(T content)

如果返回Ok(),就表示不向客户端返回任何信息,只告诉客户端请求成功。

[HttpGet]publicIHttpActionResultgetJson() {returnOk(); }

 

webapi

 

Ok(T content)向客户端返回一个成功的对象

[HttpGet]publicIHttpActionResultgetJson1() {stringresult ="请求成功!";returnOk(result); }

 

webapi

 

NotFound()

NotFound()方法会返回一个404的错误到客户端。

[HttpGet]publicIHttpActionResultgetJson() {returnNotFound(); }

 

webapi

 

Content(HttpStatusCode statusCode, T value)

向客户端返回值和http状态码。

[HttpGet]publicIHttpActionResultgetJson() {returnContent(HttpStatusCode.OK,"OK"); }

 

webapi

 

BadRequest()

向客户端返回400的http错误。

[HttpGet]publicIHttpActionResultgetJson2() {returnBadRequest(); }

 

webapi

 

Redirect(string location)

将请求重定向到其他地方。

[HttpGet]publicIHttpActionResultgetJson3() {returnRedirect("http://localhost:7408/api/Values/getJson1"); } [HttpGet]publicIHttpActionResultgetJson1() {stringresult ="请求成功!";returnOk(result); }

 

webapi

 

HttpResponseMessage

HttpResponseMessage这个对象,表示向客户端返回一个http响应的消息对象(包含http状态码和需要返回客户端的消息)。这个对象也有它独特的使用场景:需要向客户端返回HttpResponse时就要用到这个对象。以导出为例,由于需要将导出的Excel文件输出到客户端浏览器,Webapi的服务端需要向Web的客户端输出文件流,这个时候一般的IHttpActionResult对象不方便解决这个问题,于是HttpReponseMessage派上了用场。

webapi
webapi
自定义类型

你也可以将webapi的接口和普通方法一样,返回任意的类型,WebApi会自动序列化你自定义任何返回类型,然后将序列化的值写到响应正文里,状态码统一返回200。

webapi

 

webapi

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分