zoukankan      html  css  js  c++  java
  • 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派上了用场。

  • 相关阅读:
    11-基于CPCI的中频功率放大收发板
    10-基于TMS320C6678+XC7K325T的6U CPCI Full Camera Link图像处理平台
    141-FMC141-4路 250Msps/16bits ADC, FMC板卡
    125-FMC125-两路125Msps AD,两路160Msps DA FMC子卡模块
    164-基于TI DSP TMS320C6455和Altera FPGA EP2S130的Full CameraLink PDS150接口板卡
    北京太速科技有限公司 layout 事业部
    20-基于 DSP TMS320C6455的6U CPCI高速信号处理板卡
    64-基于TMS320C6455、XC5VSX95T 的6U CPCI无线通信处理平台
    18-基于双TMS320C6678 DSP的3U VPX的信号处理平台
    202-基于TI DSP TMS320C6678、Xilinx K7 FPGA XC72K325T的高速数据处理核心板
  • 原文地址:https://www.cnblogs.com/Vinkong/p/14022869.html
Copyright © 2011-2022 走看看