码迷,mamicode.com
首页 > Windows程序 > 详细

WebAPi学习笔记之 Api和返回类型(Action Results in Web API 2)

时间:2015-04-15 11:11:17      阅读:462      评论:0      收藏:0      [点我收藏+]

标签:

这篇文章主要是从英文翻译过来的,原文地址http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/action-results

  本文主要介绍ASP.NET WebAPI如何转换API返回值到HTTP响应消息的。

  一个WebAPI可以返回下面类型中的一个:

    1、void

    2、HttpResponseMessage

    3、IHttpActionResult

    4、别的类型

  更具上面的不同返回类型,WebAPI使用不同的机制创建HTTP响应消息。

Return typeHow Web API creates the response
void Return empty 204 (No Content)
HttpResponseMessage Convert directly to an HTTP response message.
IHttpActionResult Call ExecuteAsync to create an HttpResponseMessage, then convert to an HTTP response message.
Other type Write the serialized return value into the response body; return 200 (OK).

  先面将介绍四种类型的详细信息。

 

void

  如果API函数返回类型是void,WebAPI将返回状态码为204的空HTTP 响应消息,如下代码:

public class ValuesController : ApiController
{
    public void Post()
    {
    }
}

  HTTP 响应:

HTTP/1.1 204 No Content
Server: Microsoft-IIS/8.0
Date: Mon, 27 Jan 2014 02:13:26 GMT

HttpResponseMessage

  如果返回HttpResponseMessage类型,Web API将返回值直接转换成HTTP响应消息,使用HttpResponseMessage的属性对象填充响应。如下:

public class ValuesController : ApiController
{
    public HttpResponseMessage Get()
    {
        HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, "value");
        response.Content = new StringContent("hello", Encoding.Unicode);
        response.Headers.CacheControl = new CacheControlHeaderValue()
        {
            MaxAge = TimeSpan.FromMinutes(20)
        };
        return response;
    } 
}  

  HTTP响应:

HTTP/1.1 200 OK
Cache-Control: max-age=1200
Content-Length: 10
Content-Type: text/plain; charset=utf-16
Server: Microsoft-IIS/8.0
Date: Mon, 27 Jan 2014 08:53:35 GMT

hello

  上边的代码创建一个HttpResponseMessage的类型变量,直接使用原本要返回的值去生成这个HttpResponseMessage变量。然后在返回该变量。

IHttpActionResult

IhttpActionResult接口定义在WebAPI 2中。它定义一个HttpResponseMessage的工厂。它定义一个简单的函数ExecuteAsync,用来异步HttpResponseMessage

public interface IHttpActionResult
{
    Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken);
} 

如果API返回IHttpActionResult,WebAPI调用ExecuteAsync函数创建一个HttpResponseMessage。再将HttpResponseMessage转换到HTTP响应消息。

public class ValuesController : ApiController
{
    public IHttpActionResult Get()
    {
        return new TextResult("hello", Request);
    }
}

  HTTP响应:

HTTP/1.1 200 OK
Content-Length: 5
Content-Type: text/plain; charset=utf-8
Server: Microsoft-IIS/8.0
Date: Mon, 27 Jan 2014 08:53:35 GMT

hello

其余类型

……

WebAPi学习笔记之 Api和返回类型(Action Results in Web API 2)

标签:

原文地址:http://www.cnblogs.com/lonel-yboy/p/4427768.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!