ASP.NET 状态码
最后修改于 2025 年 4 月 3 日
在本文中,我们将探讨 ASP.NET 8 中的 StatusCode 功能。状态码对于构建能够与客户端正常通信的 RESTful API 和 Web 服务至关重要。
ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。正确使用状态码有助于创建健壮且可预测的 API。
基本定义
HTTP 状态码是服务器返回的三位数数字,用于指示客户端请求的结果。它们根据第一个数字分为五类。
在 ASP.NET 中,可以使用 StatusCode 方法或 Ok、NotFound 和 BadRequest 等各种辅助方法返回状态码。这些方法会创建正确的 HTTP 响应。
状态码提供了有关请求结果的重要信息。它们帮助客户端了解请求是成功、失败还是需要进一步的操作。
ASP.NET 状态码示例
以下示例演示了在 ASP.NET Web API 控制器中返回状态码的各种方法。
var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); var app = builder.Build(); app.MapControllers(); app.Run();
这设置了一个基本的 ASP.NET 应用程序,并支持控制器。MapControllers 方法为控制器启用属性路由。
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/[controller]")]
public class OrdersController : ControllerBase
{
private static List<Order> _orders = new()
{
new Order(1, "Pending", 150.00m),
new Order(2, "Completed", 299.99m),
new Order(3, "Cancelled", 75.50m)
};
[HttpGet("{id}")]
public IActionResult GetOrder(int id)
{
var order = _orders.FirstOrDefault(o => o.Id == id);
if (order == null)
{
return NotFound(); // Returns 404 status code
}
return Ok(order); // Returns 200 status code with data
}
[HttpPost]
public IActionResult CreateOrder([FromBody] Order order)
{
if (order == null || string.IsNullOrEmpty(order.Status))
{
return BadRequest(); // Returns 400 status code
}
order.Id = _orders.Max(o => o.Id) + 1;
_orders.Add(order);
return CreatedAtAction(
nameof(GetOrder),
new { id = order.Id },
order); // Returns 201 status code
}
[HttpPut("{id}")]
public IActionResult UpdateOrder(int id, [FromBody] Order order)
{
var existingOrder = _orders.FirstOrDefault(o => o.Id == id);
if (existingOrder == null)
{
return NotFound(); // Returns 404 status code
}
existingOrder.Status = order.Status;
existingOrder.Amount = order.Amount;
return NoContent(); // Returns 204 status code
}
[HttpDelete("{id}")]
public IActionResult DeleteOrder(int id)
{
var order = _orders.FirstOrDefault(o => o.Id == id);
if (order == null)
{
return NotFound(); // Returns 404 status code
}
_orders.Remove(order);
return StatusCode(StatusCodes.Status200OK,
new { Message = "Order deleted successfully" });
}
}
public record Order(int Id, string Status, decimal Amount);
此控制器演示了 RESTful API 中的各种状态码场景。GetOrder 方法返回 200 (OK) 或 404 (Not Found)。
CreateOrder 方法对于无效输入返回 400 (Bad Request),对于成功创建返回 201 (Created)。它包含新资源的链接。
UpdateOrder 方法对于成功更新返回 204 (No Content),对于不存在的订单返回 404。DeleteOrder 方法显示了 `StatusCode` 与自定义消息的显式使用。
此示例涵盖了 REST API 中常用的 HTTP 状态码:200、201、204、400 和 404。每个状态码都能正确传达操作的结果。
来源
在本文中,我们探讨了 ASP.NET 8 中的 StatusCode 功能。正确使用状态码对于构建专业、符合标准的 Web API 至关重要。