ZetCode

ASP.NET HttpDelete

最后修改于 2025 年 4 月 3 日

在本文中,我们探讨 ASP.NET 8 中的 HttpDelete 属性。此属性对于构建处理 DELETE 请求以删除资源的 RESTful API 至关重要。

ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。HttpDelete 属性简化了资源删除的路由。

基本定义

ASP.NET 中的 HttpDelete 属性将控制器操作方法标记为仅响应 HTTP DELETE 请求。DELETE 用于从服务器删除资源。

当应用于操作方法时,HttpDelete 指定在收到 DELETE 请求时应调用该方法。它可与路由参数一起使用。

HttpDelete 是 ASP.NET 的属性路由系统的一部分,该系统可精确控制 URI 模式。它通常在 Web API 控制器中用于 CRUD 操作。

ASP.NET HttpDelete 示例

以下示例演示了一个使用 HttpDelete 从集合中删除产品的 Web API 控制器。

Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();

var app = builder.Build();

app.MapControllers();
app.Run();

这会设置一个具有控制器支持的基本 ASP.NET 应用程序。MapControllers 方法为所有控制器启用属性路由。

Controllers/ProductsController.cs
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
    private static List<Product> _products = new()
    {
        new Product(1, "Laptop", 999.99m),
        new Product(2, "Mouse", 19.99m),
        new Product(3, "Keyboard", 49.99m)
    };

    [HttpDelete("{id}")]
    public IActionResult DeleteProduct(int id)
    {
        var product = _products.FirstOrDefault(p => p.Id == id);
        if (product == null) return NotFound();
        
        _products.Remove(product);
        return NoContent();
    }
}

public record Product(int Id, string Name, decimal Price);

此控制器演示了一个典型的 HttpDelete 实现。该方法响应 /api/products/{id} 的 DELETE 请求。

该操作首先尝试查找具有指定 ID 的产品。如果找不到,则返回 404 Not Found 响应。如果找到,则从集合中删除产品。

该方法在成功删除时返回 204 No Content,这是 REST API 中成功 DELETE 操作的标准响应。不需要响应正文。

该示例展示了正确的 REST 约定:使用路由参数来标识资源,并为不同场景使用适当的 HTTP 状态码。

来源

Microsoft ASP.NET Web API 文档

在本文中,我们探讨了 ASP.NET 8 中的 HttpDelete 属性。此重要功能可正确实现 REST API 中的资源删除。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。至今,我已撰写了 1,400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出所有 ASP.NET 教程