webAPI调用中的返回类型

时间:2016-12-28 13:17:52

标签: asp.net asp.net-web-api asp.net-web-api2


在ASP.NET WebAPI方法调用中使用IHttpActionResult作为返回类型有什么意义 由于这是一个界面,我们如何以界面的形式返回结果? 有人可以解释这背后的概念吗?

在此先感谢!!

1 个答案:

答案 0 :(得分:1)

基于Microsoft ASP.NET文档,

{1}}接口是在Web API 2中引入的。本质上,它定义了一个HttpResponseMessage工厂。以下是使用IHttpActionResult接口的一些优点:

  • 简化控制器的单元测试。
  • 将用于创建HTTP响应的通用逻辑移动到单独的类中。
  • 通过隐藏控制器动作的意图使其更清晰 构建响应的低级细节。

IHttpActionResult包含一个方法ExecuteAsync,它异步创建一个HttpResponseMessage实例。

IHttpActionResult

如果控制器操作返回IHttpActionResult,则Web API调用ExecuteAsync方法以创建HttpResponseMessage。然后它将HttpResponseMessage转换为HTTP响应消息。

以下是IHttpActionResult的简单实现,它创建了纯文本响应:

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

控制器中的另一个示例:

public class TextResult : IHttpActionResult
{
    string _value;
    HttpRequestMessage _request;

    public TextResult(string value, HttpRequestMessage request)
    {
        _value = value;
        _request = request;
    }
    public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
    {
        var response = new HttpResponseMessage()
        {
            Content = new StringContent(_value),
            RequestMessage = _request
        };
        return Task.FromResult(response);
    }
}

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

  

HTTP / 1.1 200 OK Content-Length:5 Content-Type:text / plain;   charset = utf-8服务器:Microsoft-IIS / 8。0日期:星期一,2014年1月27日   格林尼治标准时间08:53:35

     

您好

我希望这会有所帮助。祝好运。