ZetCode

ASP.NET Created

最后修改于 2025 年 4 月 3 日

在本文中,我们将探讨 ASP.NET 8 中的 Created 响应。对于创建新资源的 RESTful API 来说,这种响应类型至关重要。

ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。Created 响应遵循 REST 资源创建约定。

基本定义

ASP.NET 中的 Created 响应返回 HTTP 状态码 201,表示资源创建成功。它通常包含新资源的地址。

在 RESTful API 的 POST 方法中使用此响应类型。它遵循 HTTP 协议规范的成功创建操作。

Created 响应通常包括指向新资源的 Location 标头以及响应体中的资源本身。这为创建的数据提供了即时访问。

ASP.NET Created 示例

以下示例演示了一个使用 Created 响应的 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)
    };

    [HttpPost]
    public IActionResult CreateProduct([FromBody] ProductCreateDto productDto)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        var newProduct = new Product(
            _products.Max(p => p.Id) + 1,
            productDto.Name,
            productDto.Price);

        _products.Add(newProduct);

        return CreatedAtAction(
            nameof(GetProductById),
            new { id = newProduct.Id },
            newProduct);
    }

    [HttpGet("{id}")]
    public IActionResult GetProductById(int id)
    {
        var product = _products.FirstOrDefault(p => p.Id == id);
        if (product == null) return NotFound();
        return Ok(product);
    }
}

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

此控制器演示了一个创建新产品并返回 Created 响应的 POST 方法。CreatedAtAction 方法会生成一个 201 响应。

CreatedAtAction 方法接受三个参数:用于生成 URL 的操作名称、该操作的路由值以及要包含在响应体中的已创建资源。

该示例通过在 Location 标头中返回新资源的地址,展示了正确的 RESTful 约定。客户端可以使用此 URL 立即访问创建的资源。

响应同时包含新产品数据和可访问它的 URL。这为 API 消费者提供了关于创建结果的完整信息。

来源

Microsoft ASP.NET Web API 文档

在本文中,我们探讨了 ASP.NET 8 中的 Created 响应。这一强大功能有助于构建符合 HTTP 标准的、规范的 RESTful API。

作者

我叫 Jan Bodnar,是一位充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 ASP.NET 教程