WebApi处理错误代码的最佳实践(但不是完全错误)

时间:2017-06-22 18:57:17

标签: asp.net-web-api

处理错误的最佳做法是什么,但它们不是错误,只是某些对象的非常见状态。想象一下,我们有对象Task这个对象很大并且里面有一些敏感数据。 WebApi调用api/Tasks/123将获取此数据,但应处理其他一些情况,例如:

public IHttpActionResult Get(int id)
{
  var task = GetItFromDB(id);

  if (task == null) {
    return Ok(new { Error = "NOT_FOUND" });
    // or this is better?
    return StatusCode(HttpStatusCode.NotFound);
  }

  // imagine I can see task only 30 minutes before they start
  if (task.StartDate.AddMinutes(-30) > DateTime.UtcNow) {
    return Ok(new { Error = "TOO_EARLY" });
    // or this is better?
    return StatusCode(HttpStatusCode.NotFound); // there is no any HTTP status code for "custom errors"
  }

  if (task.RejectedByBigBoss == true) {
    return Ok(new { Error = "REJECTED_BY_BIG_BOSS" });
    // or what Http error code would correspond? none IMHO
  }

  // all is ok, so return task
  return Ok(task);
}

换句话说,我有时可能不会返回一个对象,而是一些“自定义”错误(实际上不是错误,而是对象的状态)。

我会接受我的自定义错误,但是我不确定什么是常见的最佳做法?

0 个答案:

没有答案