asp.net – .NET Web API HttpResponseMessage模式?

前端之家收集整理的这篇文章主要介绍了asp.net – .NET Web API HttpResponseMessage模式?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我看到Web API 2控制器返回HttpResponse和实际对象.例:
public HttpResponseMessage Get(string id)
    {
        var app = apps.Single(c => c.Id == id);

        return new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new ObjectContent<object>(app,Configuration.Formatters.JsonFormatter)
        };
    }

要么

public Application Get(string id)
    {
        return apps.Single(c => c.Id == id);
    }

我的问题是“正确”的方式? #2要短得多但是#1更好或#2自动做#1#?

解决方法

请参阅 thisthis SO问题.

两种情况下的响应都是相同的(HttpResponseMessage).

HttpResponseMessage允许您使用HTTP协议(例如,通过Headers属性)并统一您的返回类型.

返回CLR类型可以更具可读性,但是您可以放松使用不同状态代码返回不同类型的灵活性,除非您使用动态或对象来抵消返回特定类型的目的.

就个人而言,我更喜欢使用IHttpActionResult(在v2中添加)并在控制器操作上为预期的返回类型指定ResponseTypeAttribute以提高可读性.

[HttpGet]
[ResponseType(typeof(Portfolio))]
public IHttpActionResult GetPortfolio([FromUri] long id)
{
    // get portfolio

    return Ok(portfolio);
}

您可以使用默认的IHttpActionResult实现轻松地操作响应消息(以RESTful方式)(请参阅上面的OkResult).避免自己构造HttpResponseMessage也可以保持代码清洁. Here是关于IHttpActionResult的官方文章,here是关于HttpResponseMessage和IHttpActionResult的有趣的SO对话.

猜你在找的asp.Net相关文章