NotFound()
在 ASP.NET Core 中,
NotFound() 是一个辅助方法,用于在控制器中返回一个 HTTP 404 状态码的响应。当资源未找到或请求的资源不存在时,通常会使用这个方法。作用
NotFound() 方法用于指示请求的资源未找到,返回的 HTTP 响应状态码为 404 Not Found。这在处理 RESTful API 或 MVC 应用时非常有用,尤其是在资源检索失败时。使用场景
以下是一些常见的使用场景:
-
资源不存在:当请求的资源(如数据库中的记录)不存在时,返回
NotFound()。 -
无效的请求参数:当请求参数无效或无法找到对应的资源时,返回
NotFound()。 -
API 设计:在 RESTful API 中,当请求的资源不存在时,返回 404 状态码是一种标准做法。
示例代码
以下是一个使用
NotFound() 的示例:控制器代码
csharp复制
public class ProductsController : Controller
{
private readonly MyDbContext _context;
public ProductsController(MyDbContext context)
{
_context = context;
}
// GET: Products/Details/5
public async Task<IActionResult> Details(int? id)
{
if (id == null)
{
return NotFound(); // 返回 404,因为没有提供有效的 ID
}
var product = await _context.Products.FindAsync(id);
if (product == null)
{
return NotFound(); // 返回 404,因为没有找到对应的资源
}
return View(product); // 返回视图并传递产品数据
}
}
API 控制器代码
csharp复制
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
private readonly MyDbContext _context;
public ProductsController(MyDbContext context)
{
_context = context;
}
// GET: api/Products/5
[HttpGet("{id}")]
public async Task<IActionResult> GetProduct(int id)
{
var product = await _context.Products.FindAsync(id);
if (product == null)
{
return NotFound(); // 返回 404,因为没有找到对应的资源
}
return Ok(product); // 返回 200 OK 和产品数据
}
}
返回的内容
-
对于 MVC 视图:
NotFound()返回一个 404 状态码的 HTTP 响应,通常会显示一个错误页面。 -
对于 API:
NotFound()返回一个 404 状态码的 HTTP 响应,响应体通常是空的,或者可以自定义返回一些错误信息。
自定义错误信息
如果需要返回自定义的错误信息,可以使用
NotFound(object value) 方法。例如:csharp复制
return NotFound(new { message = "Product not found" });
这将返回一个 404 状态码,并在响应体中包含自定义的 JSON 数据:
JSON复制
{
"message": "Product not found"
}
总结
NotFound() 是一个非常有用的工具,用于处理资源未找到的情况。它可以帮助开发者遵循 HTTP 状态码的标准,提供清晰的错误响应,从而提升用户体验和 API 的可维护性。
浙公网安备 33010602011771号