处理错误的最佳做法是什么,但它们不是错误,只是某些对象的非常见状态。想象一下,我们有对象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);
}
换句话说,我有时可能不会返回一个对象,而是一些“自定义”错误(实际上不是错误,而是对象的状态)。
我会接受我的自定义错误,但是我不确定什么是常见的最佳做法?