首页 > 解决方案 > 在 @GetMapping 映射方法中是否可以获取 value 属性中定义的相对 URL

问题描述

在 Spring Web 服务中,我有控制器具有多个 URL 映射方法来处理请求。我想将 2 个 url 映射到一个 @GetMapping 方法,如下所示:

@GetMapping(value = {"ex/{status}", "ex/retries/{status}"},  produces = "application/json")
public ResponseEntity<ResponsePOJO> getExRetries(@RequestParam("interval") Optional<String> intervalOptional, @PathVariable("status") String successStatus)
    {
/**
*LOTS OF WORK
*/

//If this method was called via ex/{status} then call using true
getReport(true);
//BUT if it was called via ex/retries/{status} then call using false i.e getReport(true);
}

现在基于调用此方法的 2 个 url 中的哪一个,唯一的变化是在最后一行方法调用中将使用 true 否则为 false。现在,如果我为这 2 个 url 映射实现 2 个方法,并且只更改 最后一行方法调用,这将导致代码重复。

有没有办法找到用于调用它的 url,然后我可以使用if条件进行正确调用并避免 2 种方法,从而避免代码重复。

标签: javaspringget-mapping

解决方案


HttpServletRequest作为参数添加到 Controller 方法,然后检查 url。


推荐阅读