繁体   English   中英

如何从@GetMapping spring 注释中排除一些路径?

[英]How exclude some paths from @GetMapping spring annotation?

我使用Spring Boot并且我的主控制器处理所有顶级网址:

import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class IndexController {
    @GetMapping({"/*"})
    public ResponseEntity<String> handleIndex() {
        // ...
    }
}

出于某些原因,我希望从处理我的控制器中排除路径/exclude_path

像这样的东西:

@GetMapping(include={"/*"}, exclude={"/exclude_path"})

你能回答我怎么做吗?

首先, /*是一种不好的做法。 如果您真的想这样做,最好的选择是为您的控制器引入一个方面。 并在那里过滤掉它。
像这样的事情会做:

@Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping)")
public void requestMapping() {}

@Pointcut("within(blah.blah.package.controller.*)")
public void myController() {}

@Around("requestMapping() && myController()")
public Object logAround(ProceedingJoinPoint joinPoint, RequestMapping requestMapping) throws Throwable {  
    String url = requestMapping.value();
    // check the url and based on that do  
    // joinPoint.proceed();
}

您应该删除“/*”,因为它会删除所有请求。 只提供您想要的路径,这样您就不需要 /excludepath。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM