我正在寻找一种方法来验证自定义标头&#39; X-Client-Id&#39;设置为在SpringBoot中发送到REST控制器的HTTP请求中的List<int> ints1 = new List<int>();
ids.Add(1);
ids.Add(2);
ids.Add(3);
var values = new List<KeyValuePair<string, object>>
{
new KeyValuePair<string, object>("parm1", "lkdjfowejfd123"),
new KeyValuePair<string, object>("parm2", ints1)
};
var httpClient = new HttpClient(new HttpClientHandler());
HttpResponseMessage response = await httpClient.PostAsync(someUrl, new FormUrlEncodedContent(values));
response.EnsureSuccessStatusCode();
string data = await response.Content.ReadAsStringAsync();
中定义的值。
我看到教程(如this),其中包含方法中的标题,如下所示:Repository
。我假设我必须将该行写入每个方法并注入一个公共验证器bean来验证该值。
另一个stackoverflow answer似乎建议使用@RequestHeader(value="User-Agent")
。我不确定它是否适用于标头值和REST端点。
那么验证类/ REST控制器的所有方法是否设置了特定标头的推荐方法是什么?
答案 0 :(得分:2)
基本上最简单(也是最合乎逻辑)的方法是在请求到达Controller之前捕获它。这可以通过HandlerInterceptor
作为其他回答状态或使用简单的Filter
OncePerRequestFilter
来实现。
扩展该类,覆盖doFilterInternal()
方法,因为doFilter()是最终的,提取正确的标头值,根据需要检查它,并根据值,抛出异常或继续链。