使用 SpringBoot 我設法使用 動態(在測驗中)獲取所有控制器的串列RequestMappingHandlerMapping,但我無法檢查控制器是否使用 @RequestHeader("language") 。有沒有辦法檢索這些資訊?我認為不可能從RequestMappingHandlerMapping.
謝謝。
public void randomApi(@PathVariable("user") String user,
@RequestHeader("language") String language){...}
uj5u.com熱心網友回復:
RequestMappingHandlerMapping代表所有控制器方法,您必須首先從中獲取您感興趣的特定控制器方法。最簡單的方法是首先為控制器方法命名,例如GetRandomApi:
@GetMapping(name = "GetRandomApi" , value= "/random")
public void randomApi(@PathVariable("user") String user, @RequestHeader("language") String language){
}
然后通過這個名稱獲取控制器方法:
HandlerMethod hm = mapping.getHandlerMethodsForMappingName("GetRandomApi").get(0);
請注意HandlerMethod代表一個控制器方法,我假設您只有一個具有此名稱的控制器方法。
要檢查此控制器方法是否有一個用 注釋的引數@RequestHeader,您可以執行以下操作:
for( MethodParameter param : hm.getMethodParameters()){
RequestHeader requestHeader = param.getParameterAnnotation(RequestHeader.class);
if(requestHeader != null) {
System.out.println(String.format("parameter index %s is annotated with @RequestHeader with the value %s",
param.getParameterIndex(),
requestHeader.value()));
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/409406.html
標籤:
上一篇:SpringKafka確認設定
