C# WebApi 接口返回值不困惑:返回值类型详解

2020-01-05 09:24:50于丽


 [HttpGet]
  public IHttpActionResult GetContentResult()
  {
   return Content<string>(HttpStatusCode.OK, "OK");
  }

向客户端返回值和http状态码。

4.2、BadRequest()


[HttpGet]
  public IHttpActionResult GetBadRequest(ORDER order)
  {
   if (string.IsNullOrEmpty(order.ID))
    return BadRequest();
   return Ok();
  }

向客户端返回400的http错误。

4.3、Redirect(string location)


 [HttpGet]
  public IHttpActionResult RedirectResult()
  {
   return Redirect("http://www.easck.com// 摘要: 
 //  Defines a command that asynchronously creates an System.Net.Http.HttpResponseMessage.
 public interface IHttpActionResult
 {
  // 摘要: 
  //  Creates an System.Net.Http.HttpResponseMessage asynchronously.
  //
  // 参数: 
  // cancellationToken:
  //  The token to monitor for cancellation requests.
  //
  // 返回结果: 
  //  A task that, when completed, contains the System.Net.Http.HttpResponseMessage.
  Task<System.Net.Http.HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken);
 }
}

这个接口包含唯一的一个方法ExecuteAsync(),此方法将以异步方式创建一个HttpResponseMessage实例返回给客户端。

有了这个作为基础,下面,我们自定义一个bootstrapTable服务端分页的子类去展示自定义IHttpActionResult的用法。

首先,自定义一个实现类


public class PageResult : IHttpActionResult
 {
  object _value;
  HttpRequestMessage _request;

  public PageResult(object value, HttpRequestMessage request)
  {
   _value = value;
   _request = request;
  }

  public Task<HttpResponseMessage> ExecuteAsync(System.Threading.CancellationToken cancellationToken)
  {
   var response = new HttpResponseMessage()
   {
    Content = new ObjectContent(typeof(object), _value, new JsonMediaTypeFormatter()),
    RequestMessage = _request
   };
   return Task.FromResult(response);
  }
 }