在java中,如何检索@RequestMapping名称的值?

问题描述 投票:0回答:1

我有一个这样的控制器:

@RestController
@RequestMapping(path = "/api/v1/cPathA", name = "cNameA")
@RequiredArgsConstructor
public class AController {

    @PostMapping(path = "/pathA", name = "nameA")
    public Void pathA() {
    }

    @GetMapping(path = "pathB", name = "nameB")
    public Void pathB() {
    }

}

我应该如何检索方法的

name
「nameA 或 nameB」?最好在
doFilterInternal
方法中执行此操作。

我尝试检查

HttpServeletRequest
内部,但似乎没有任何部分可以检索名称。我可以使用的最接近的是 HttpServletRequest 的
request.getServletPath()
,它返回
/api/v1/cPathA/nameA
,但我想获得实际名称。

JwtAuthenticationFilter.java

@Component
@RequiredArgsConstructor
public class JwtAuthenticationFilter extends OncePerRequestFilter {

    private final JWTServiceImpl jwtServiceImpl;
    private final UserServiceImpl userServiceImpl;
    private final GetCookieByName getCookieByName;

    @Override
    protected void doFilterInternal(
            @NonNull HttpServletRequest request,
            @NonNull HttpServletResponse response,
            @NonNull FilterChain filterChain)
            throws ServletException, IOException {

        final String jwtToken;
        final String refreshToken;
        final String userEmail;

        String name = request.getServerName(); # returns localhost
        String path = request.getServletPath(); # returns /api/v1/cPathA/nameA

另外:最好当我访问 pathA 方法时,我会得到

cNameA
nameA
可能是链
cNameA.nameA
或数组。但至少能得到
nameA
我就很满足了。

java spring spring-boot servlets
1个回答
0
投票

可以通过拦截器获取,创建拦截器bean,并继承HandlerInterceptorAdapter,重写preHandle()方法,在该方法中可以获取目标处理器的信息,包括名称

© www.soinside.com 2019 - 2024. All rights reserved.