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 的可维护性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了