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 至关重要。