ASP.NET BadRequest
最后修改于 2025 年 4 月 3 日
在本文中,我们将探讨 ASP.NET 8 中的 BadRequest 响应。此响应对于处理 RESTful API 和 Web 服务中的客户端错误至关重要。
ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。BadRequest 辅助方法简化了错误处理。
基本定义
ASP.NET 中的 BadRequest 方法返回 HTTP 400 状态码响应。这表示服务器由于客户端错误而无法处理请求。
BadRequest 通常在客户端输入验证失败时使用。它可以返回一个简单的状态码,或者在响应体中包含其他错误详细信息。
在 ASP.NET Core 中,BadRequest 可通过 ControllerBase 类获得。它通常在 Web API 控制器中用于处理无效请求。
ASP.NET BadRequest 示例
以下示例演示了一个使用 BadRequest 的 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 UsersController : ControllerBase
{
private static List<User> _users = new()
{
new User(1, "john_doe", "john@example.com"),
new User(2, "jane_smith", "jane@example.com")
};
[HttpPost]
public IActionResult CreateUser([FromBody] UserCreateRequest request)
{
if (string.IsNullOrWhiteSpace(request.Username))
{
return BadRequest("Username is required");
}
if (string.IsNullOrWhiteSpace(request.Email))
{
return BadRequest("Email is required");
}
if (!request.Email.Contains('@'))
{
return BadRequest("Invalid email format");
}
if (_users.Any(u => u.Username == request.Username))
{
return BadRequest("Username already exists");
}
var newUser = new User(
_users.Max(u => u.Id) + 1,
request.Username,
request.Email);
_users.Add(newUser);
return CreatedAtAction(nameof(GetUserById),
new { id = newUser.Id }, newUser);
}
[HttpGet("{id}")]
public IActionResult GetUserById(int id)
{
var user = _users.FirstOrDefault(u => u.Id == id);
if (user == null) return NotFound();
return Ok(user);
}
}
public record User(int Id, string Username, string Email);
public record UserCreateRequest(string Username, string Email);
此控制器演示了多种 BadRequest 情况。CreateUser 操作会验证请求,并对无效输入返回适当的 400 响应。
第一个验证检查用户名是否为空。第二个检查电子邮件是否为空。第三个验证电子邮件格式。第四个防止用户名重复。
每次验证失败都会返回一个带有描述性消息的 BadRequest。ApiController 属性启用自动模型状态验证。
当所有验证都通过时,该操作将创建用户并返回 201 Created。这显示了 BadRequest 与正确的 RESTful 状态码在错误处理方面的配合使用。
来源
在本文中,我们探讨了 ASP.NET 8 中的 BadRequest 响应。此重要功能有助于构建具有适当错误处理的健壮 API。