Spring RestController 捕获所有 RequestMapping 并继续到正确的端点
Spring RestController catch all RequestMapping and continue to the correct endpoint
假设我有一个 @RestController
如下所示:
@RestController
@RequestMapping("/1st")
public class MyController {
@GetMapping("/2nd/aaa")
public void getAaa() {
...
}
@GetMapping("/2nd/bbb")
public void getBbb() {
...
}
}
我想添加方法来捕获所有具有基本路径“/1st”和“/1st/2nd”之间的请求,然后继续到正确的端点。我尝试添加:
@GetMapping("/**")
public void doThisFirst() {
...
}
但这没有用,对“/1st/2nd/bbb”的请求仍然只落在方法 getBbb()
上。请帮忙,谢谢。
I want to add methods to catch all requests with the base path "/1st"
and "/1st/2nd" in between and then continue to the correct endpoint. I
tried adding:
@GetMapping("/**") public void doThisFirst() {
... }
可能您想在执行每个端点具有的相关代码之前执行一些额外的代码(doThisFirst 中的代码)。
这里有2个解决方案。
A) 您使用 @Before
定义一个方面,它将在您的最终端点具有的代码之前执行。这是一些 example code
B) 您定义了一个拦截器,它只会在这两个端点之前执行。在这里检查一些
拦截器或方面应包含您在 doThisFirst() 中的代码,并且您希望在到达实际端点之前执行。
在任何情况下,此起始代码都不应位于控制器内,因此您可以从控制器中删除 @GetMapping("/**")
。
您正在寻找的功能称为过滤器。过滤器捕获所有传入的请求,执行一些操作,并将其传递到正确的端点。他们还在端点发送响应后捕获传出信息。这是一篇解释如何编写和配置过滤器的文章:How to Define a Spring Boot Filter?
假设我有一个 @RestController
如下所示:
@RestController
@RequestMapping("/1st")
public class MyController {
@GetMapping("/2nd/aaa")
public void getAaa() {
...
}
@GetMapping("/2nd/bbb")
public void getBbb() {
...
}
}
我想添加方法来捕获所有具有基本路径“/1st”和“/1st/2nd”之间的请求,然后继续到正确的端点。我尝试添加:
@GetMapping("/**")
public void doThisFirst() {
...
}
但这没有用,对“/1st/2nd/bbb”的请求仍然只落在方法 getBbb()
上。请帮忙,谢谢。
I want to add methods to catch all requests with the base path "/1st" and "/1st/2nd" in between and then continue to the correct endpoint. I tried adding:
@GetMapping("/**") public void doThisFirst() { ... }
可能您想在执行每个端点具有的相关代码之前执行一些额外的代码(doThisFirst 中的代码)。
这里有2个解决方案。
A) 您使用 @Before
定义一个方面,它将在您的最终端点具有的代码之前执行。这是一些 example code
B) 您定义了一个拦截器,它只会在这两个端点之前执行。在这里检查一些
拦截器或方面应包含您在 doThisFirst() 中的代码,并且您希望在到达实际端点之前执行。
在任何情况下,此起始代码都不应位于控制器内,因此您可以从控制器中删除 @GetMapping("/**")
。
您正在寻找的功能称为过滤器。过滤器捕获所有传入的请求,执行一些操作,并将其传递到正确的端点。他们还在端点发送响应后捕获传出信息。这是一篇解释如何编写和配置过滤器的文章:How to Define a Spring Boot Filter?