.NET Core 7 Web API中如何获取响应头x-rate-limit-remaining的值
在.NET Core 7 Web API中读取响应头x-rate-limit-remaining值
以下是两种常见场景下的实现方式:
1. 在控制器Action中读取
直接通过HttpContext.Response.Headers获取目标字段值,示例代码:
[HttpGet("api/data")] public IActionResult GetData() { // 尝试读取响应头中的x-rate-limit-remaining字段 if (HttpContext.Response.Headers.TryGetValue("x-rate-limit-remaining", out var remainingValue)) { // 根据业务需求转换类型,这里以转为int为例 if (int.TryParse(remainingValue, out int remainingRequests)) { // 此时remainingRequests变量已存储目标值,可用于后续逻辑 // 示例:记录日志或返回给前端 } // 如果不需要转换,直接使用remainingValue.ToString()即可 } return Ok("请求处理完成"); }
2. 在自定义中间件中读取
如果需要全局拦截响应头信息,可通过中间件实现:
public class RateLimitHeaderMiddleware { private readonly RequestDelegate _next; public RateLimitHeaderMiddleware(RequestDelegate next) { _next = next; } public async Task InvokeAsync(HttpContext context) { // 先执行后续请求管道逻辑 await _next(context); // 请求处理完成后读取响应头 if (context.Response.Headers.TryGetValue("x-rate-limit-remaining", out var remainingValue)) { if (int.TryParse(remainingValue, out int remaining)) { // 使用读取到的剩余请求次数值 // 示例:写入日志、监控统计等 } } } } // 在Program.cs中注册中间件 builder.Services.AddTransient<RateLimitHeaderMiddleware>(); app.UseMiddleware<RateLimitHeaderMiddleware>();
注意事项
.NET Core的响应头集合不区分大小写,因此无需严格匹配x-rate-limit-remaining的大小写格式- 如果字段值不需要数值转换,直接调用
remainingValue.ToString()即可获取原始字符串值
内容的提问来源于stack exchange,提问作者Sami In
相关产品推荐
相关产品推荐

