使用 Spring AOP 获取特定的 header 参数?
Get specific header parameter using Spring AOP?
我创建了 Spring Boot REST API,其中所有端点都将具有 header 参数 "sessionGuid"。我想使用 AOP 打印那个 sessionGuid。
@Before("PointcutDefinition.controllerLayer()")
public void beforeAdvice(JoinPoint joinPoint)
{
Object[] signatureArgs = joinPoint.getArgs();
for (Object signatureArg : signatureArgs)
{
System.out.println("Arg: " + signatureArg);
}
}
上面的代码正在打印所有参数,即如果我的 URL 是
{{base-url}}/v1/login/users/SOMENAME/status
它正在打印 SOMENAME(路径变量)和 "sessionGuid" 值。我只想打印 header 参数 "sessionGuid" 的值。
joinPoint.getArgs();正在返回一个数组。我不想打印像 arg[1] 这样的东西,因为 sessionGuid 可能是不同操作中的第三个或第四个参数。
有什么方法可以让我从 header.
中只打印 "sessionGuid"
如果您正在寻找问题的解决方案,可以直接使用 RequestContextHolder
。
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String header = request.getHeader("sessionGuid")
如果你想更通用,你也可以使用反射API。
我创建了 Spring Boot REST API,其中所有端点都将具有 header 参数 "sessionGuid"。我想使用 AOP 打印那个 sessionGuid。
@Before("PointcutDefinition.controllerLayer()")
public void beforeAdvice(JoinPoint joinPoint)
{
Object[] signatureArgs = joinPoint.getArgs();
for (Object signatureArg : signatureArgs)
{
System.out.println("Arg: " + signatureArg);
}
}
上面的代码正在打印所有参数,即如果我的 URL 是
{{base-url}}/v1/login/users/SOMENAME/status 它正在打印 SOMENAME(路径变量)和 "sessionGuid" 值。我只想打印 header 参数 "sessionGuid" 的值。
joinPoint.getArgs();正在返回一个数组。我不想打印像 arg[1] 这样的东西,因为 sessionGuid 可能是不同操作中的第三个或第四个参数。
有什么方法可以让我从 header.
中只打印 "sessionGuid"如果您正在寻找问题的解决方案,可以直接使用 RequestContextHolder
。
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String header = request.getHeader("sessionGuid")
如果你想更通用,你也可以使用反射API。