Java 如何从其他服务获取@GetMapping内的路径
我有一个带有@GetMapping注释的rest控制器,用于将HTTP请求映射到特定的处理程序方法:Java 如何从其他服务获取@GetMapping内的路径,java,spring,spring-boot,spring-mvc,kotlin,Java,Spring,Spring Boot,Spring Mvc,Kotlin,我有一个带有@GetMapping注释的rest控制器,用于将HTTP请求映射到特定的处理程序方法: @RestController class Handler(){ @GetMapping(path = ["method"]) fun handlerMethod(){ //... } } 我也有电子邮件服务,我需要发送一些链接到我的端点的电子邮件(在这种情况下) 这里我从配置()中获取基本url。有没有办法从Handler的@GetMapping fo
@RestController
class Handler(){
@GetMapping(path = ["method"])
fun handlerMethod(){
//...
}
}
我也有电子邮件服务,我需要发送一些链接到我的端点的电子邮件(在这种情况下)
这里我从配置()中获取基本url。有没有办法从Handler的@GetMapping for build链接获取EmailService中的路径属性到我的服务?您可以从HttpServletRequest对象获取路径信息。请检查以下内容: 如果您没有获得确切的路径,请检查此项以了解获取路径的不同方法:
您可以通过
RequestContextHolder
将请求绑定到当前线程
((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest()
上面的代码将获取
HttpServletRequest
,然后您可以使用[HttpServletRequest#getPathInfo()][1]
获取URL的路径Spring支持执行此任务。在控制器方法中,传递类型为UriComponentsBuilder
的参数。此生成器将包含有关当前请求路由的所有信息(主机名、端口、路径等)。然后,您可以使用MvcUriComponentsBuilder
让Spring构造您需要的链接(Java,但在Kotlin中应该是等效的):
也许这会有所帮助:
@Service
class EmailService(val config: Config){
fun sendEmail(){
// send "config.baseUrl/${getMethodPath()}"
}
fun getMethodPath(){
//todo
}
}
MvcUriComponentsBuilder.relativeTo(builderParameter)
.fromMethod(Handler.class, "method")