首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >webAPI调用中的返回类型

问webAPI调用中的返回类型
EN

Stack Overflow用户
提问于 2016-12-28 13:17:51
回答 1查看 7.3K关注 0票数 1

使用IHttpActionResult作为ASP.NET WebAPI方法调用中的返回类型有何意义。

由于这是一个接口,我们如何以接口的形式返回结果?

有人能解释一下背后的概念吗?

提前谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-28 13:30:46

根据微软ASP.NET文档,

在Web 2中引入了IHttpActionResult接口,定义了一个HttpResponseMessage工厂。下面是使用IHttpActionResult接口的一些优点:

  • 简化了控制器的单元测试。
  • 将创建HTTP响应的公共逻辑移动到单独的类中。
  • 通过隐藏构建响应的底层细节,使控制器动作的意图更加清晰。

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

代码语言:javascript
复制
public interface IHttpActionResult
{
    Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken);
} 

如果控制器操作返回IHttpActionResult,Web将调用ExecuteAsync方法来创建HttpResponseMessage。然后将HttpResponseMessage转换为HttpResponseMessage消息。

下面是创建纯文本响应的IHttpActionResult的一个简单实现:

代码语言:javascript
复制
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);
    }
}

主计长中的另一个示例:

代码语言:javascript
复制
public class ValuesController : ApiController
{
    public IHttpActionResult Get()
    {
        return new TextResult("hello", Request);
    }
}

及其Respond

HTTP/1.1 200确定内容-长度:5内容-类型:text/平原;charset=utf-8 Server: Microsoft-IIS/8.0日期: Mon,2014年1月27日08:53:35 GMT 你好

我希望这能帮到你。祝好运。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41362952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档