ASP.NET 5 WebApi 返回 HttpResponseMessage

首先,ASP.NET 5 没有了 MVC 和 WebApi 的区分,都属于 ASP.NET 5,从 Controller 的继承就可以看出,原来 ASP.NET WebApi 2 ValuesController : ApiController 改成了 ValuesController : Controller,并且返回 HttpResponseMessage 也有些改变。

ASP.NET WebApi 2 中的示例代码:

[Route("values/{id}")]
public async Task<HttpResponseMessage> Get(string id)
{
    var response = Request.CreateResponse(HttpStatusCode.OK);
    var accept = Request.Headers.Accept;
    var result = await _valuesService.Get(id);

    if (accept.Any(x => x.MediaType == "text/html"))
    {
        response.Content = new StringContent(result, Encoding.UTF8, "text/html");
    }
    else
    {
        response.Content = new StringContent(result, Encoding.UTF8, "text/plain");
    }
    return response;
}

ASP.NET 5 WebApi 中的示例代码:

[Route("values/{id}")]
public async Task Get(string id)
{
    var accept = Request.GetTypedHeaders().Accept;
    var result = await _valuesService.Get(id);
    var data = Encoding.UTF8.GetBytes(result);
    if (accept.Any(x => x.MediaType == "text/html"))
    {
        Response.ContentType = "text/html";
    }
    else
    {
        Response.ContentType = "text/plain";
    }
    await Response.Body.WriteAsync(data, 0, data.Length);
}

可以看到,改变还是很大的,主要是两方面:

  • 没有了 Request.CreateResponse,获取 Accept 需要通过 Request.GetTypedHeaders()
  • 没有返回值,而是直接通过数据流的方式写入到 Response.Body 中。

参考资料:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值