我正在尝试向客户提出请求,如果客户不存在,则应返回某种“未找到”页面。下面哪一项是用于此类任务的最佳实践,为什么?
public ActionResult Index(int id)
{
if (customerService.GetCustomerById(id) == null)
return View("NotFound");
return View();
}
或
public ActionResult Index(int id)
{
if (customerService.GetCustomerById(id) == null)
throw new HttpException(404, "Customer not found");
return View();
}
答案 0 :(得分:6)
扔掉404.真的没有争论。这不是成为一名REST门徒,而是网络的运作方式。
您可以返回视图和 404.帮助用户或提供搜索框或指向一些畅销商品通常很有帮助,但要让NotFound对客户明确并始终返回HTTP响应中的404。毫无疑问。
编辑:这是一个很好的指导:http://www.codinghorror.com/blog/2007/03/creating-user-friendly-404-pages.html
答案 1 :(得分:2)
这是一个很好的问题(+1),因为对于何时使用HTTP异常代码存在一些不同意见,何时不存在。
REST门徒可能会告诉您转到HTTP异常路由,因为他们认为URI标识了一个概念资源(即:您所指的实际对象/事物 - 在这种情况下是客户),以及该资源如果不存在则应该回复404错误。
然而,有些人会不同意并且说你应该只传回404错误,如果物理资源,例如一个文件,不存在。
我倾向于进入第二阵营,并建议您使用自定义视图返回200 OK,说明无法找到ID指定的客户。