200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > NET问答: 如何在 ASP.NET Core Web API 的 Response 中添加自定义的 Header ?

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

时间:2023-01-30 11:01:04

相关推荐

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

咨询区

JDawg

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

HttpResponseMessageresponse=newHttpResponseMessage(HttpStatusCode.OK);response.Headers.Add("X-Total-Count",count.ToString());returnResponseMessage(response);

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

回答区

Timothy Macharia

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

publicIActionResultSendResponse(){Response.Headers.Add("X-Total-Count","20");returnOk();}

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

publicvoidConfigure(IApplicationBuilderapp,IWebHostEnvironmentenv){app.Use(async(context,next)=>{context.Response.Headers.Add("X-Developed-By","YourName");awaitnext.Invoke();});app.UseEndpoints(endpoints=>{endpoints.MapControllers();});}

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

Simon_Weaver

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

publicclassAddHeaderAttribute:ResultFilterAttribute{privatereadonlystring_name;privatereadonlystring_value;publicAddHeaderAttribute(stringname,stringvalue){_name=name;_value=value;}publicoverridevoidOnResultExecuting(ResultExecutingContextcontext){context.HttpContext.Response.Headers.Add(_name,newstring[]{_value});base.OnResultExecuting(context);}}

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

[HttpGet][AddHeader("X-MyHeader","123")]publicIEnumerable<WeatherForecast>Get(){varrng=newRandom();returnEnumerable.Range(1,5).Select(index=>newWeatherForecast{Date=DateTime.Now.AddDays(index),TemperatureC=rng.Next(-20,55),Summary=Summaries[rng.Next(Summaries.Length)]}).ToArray();}

最后的效果图如下:

点评区

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。