欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

NET问答: 如何在 ASP.NET Core Web API 的 Response 中添加自定义的 Header ?

发布时间:2023/12/4 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 NET问答: 如何在 ASP.NET Core Web API 的 Response 中添加自定义的 Header ? 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

咨询区

JDawg

我正在将 Web API 2 移植到 ASP.NET Core Web API 上,以前我都直接在 Response 属性上添加自定义的 Header,如下代码所示:

HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); response.Headers.Add("X-Total-Count", count.ToString()); return ResponseMessage(response);

请问在 ASP.NET Core Web API 上该如何往 Header 中添加呢?

回答区

Timothy Macharia

很简单,你可以在 Action 中直接拿到 Response 属性,然后向 header 中添加你的自定义键值即可,参考如下代码:

public IActionResult SendResponse() {Response.Headers.Add("X-Total-Count", "20");return Ok(); }   

对了,如果你想让所有的 Response 都添加 header,可以优先考虑 中间件,只需要在 Request Pipeline 中配置一下即可,参考代码如下:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env){app.Use(async (context, next) =>{context.Response.Headers.Add("X-Developed-By", "Your Name");await next.Invoke();});app.UseEndpoints(endpoints =>{endpoints.MapControllers();});}

最后你会看到如下的 response header 中信息。

Simon_Weaver

使用 自定义特性 也是一个非常不错的办法,参考如下代码:

public class AddHeaderAttribute : ResultFilterAttribute {private readonly string _name;private readonly string _value;public AddHeaderAttribute(string name, string value){_name = name;_value = value;}public override void OnResultExecuting(ResultExecutingContext context){context.HttpContext.Response.Headers.Add(_name, new string[] { _value });base.OnResultExecuting(context);} }

然后可以将它标注在 API 的 Action 上,如下代码所示:

        [HttpGet][AddHeader("X-MyHeader", "123")]public IEnumerable<WeatherForecast> Get(){var rng = new Random();return Enumerable.Range(1, 5).Select(index => new WeatherForecast{Date = DateTime.Now.AddDays(index),TemperatureC = rng.Next(-20, 55),Summary = Summaries[rng.Next(Summaries.Length)]}).ToArray();}

最后的效果图如下:

点评区

不管是 request 还是 response,向 header 中配置自定义信息太常见了,比如在 request 中使用经典的 basic 验证,感觉在 ASP.NET Core Web API 中更多的是倾向于 中间件 而不是传统的 特性方式,反正都能实现,看个人爱好吧。????????????

总结

以上是生活随笔为你收集整理的NET问答: 如何在 ASP.NET Core Web API 的 Response 中添加自定义的 Header ?的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。