在ASP.NET Core Web API中,可以通过以下步骤发送带有错误HTTP响应的正文:
以下是一个示例代码,演示如何在ASP.NET Core Web API中发送带有错误HTTP响应的正文:
// 自定义错误模型
public class ErrorResponseModel
{
public int ErrorCode { get; set; }
public string ErrorMessage { get; set; }
}
// 自定义错误处理中间件
public class ErrorHandlingMiddleware
{
private readonly RequestDelegate _next;
public ErrorHandlingMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
try
{
await _next(context);
}
catch (Exception ex)
{
await HandleExceptionAsync(context, ex);
}
}
private static Task HandleExceptionAsync(HttpContext context, Exception exception)
{
var statusCode = HttpStatusCode.InternalServerError; // 默认错误状态码
var errorCode = 500; // 默认错误代码
var errorMessage = "An error occurred."; // 默认错误消息
// 根据异常类型设置合适的状态码和错误信息
if (exception is BadRequestException)
{
statusCode = HttpStatusCode.BadRequest;
errorCode = 400;
errorMessage = "Bad request.";
}
else if (exception is NotFoundException)
{
statusCode = HttpStatusCode.NotFound;
errorCode = 404;
errorMessage = "Resource not found.";
}
// 构建错误响应模型
var errorResponse = new ErrorResponseModel
{
ErrorCode = errorCode,
ErrorMessage = errorMessage
};
// 设置响应内容和状态码
context.Response.ContentType = "application/json";
context.Response.StatusCode = (int)statusCode;
// 将错误响应模型序列化为JSON并写入响应正文
var json = JsonConvert.SerializeObject(errorResponse);
return context.Response.WriteAsync(json);
}
}
// 注册自定义错误处理中间件
public void Configure(IApplicationBuilder app)
{
// ...
app.UseMiddleware<ErrorHandlingMiddleware>();
// ...
}
// 控制器中抛出异常
[HttpGet("{id}")]
public IActionResult Get(int id)
{
var item = _repository.GetItem(id);
if (item == null)
{
throw new NotFoundException();
}
return Ok(item);
}
通过以上步骤,可以在ASP.NET Core Web API中发送带有错误HTTP响应的正文。根据业务需求,可以自定义错误模型、错误处理中间件,并在控制器中抛出适当的异常。这样,客户端将能够接收到包含错误信息的HTTP响应。
领取专属 10元无门槛券
手把手带您无忧上云