1

在 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 种方法,从而避免代码重复。

4

2 回答 2

0

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

于 2018-06-15T13:41:38.293 回答
0

我认为你不应该把它复杂化。您可以有 2 个方法,它们都调用具有布尔参数并包含大量工作和 getParameter(boolean param)的第三个方法

于 2018-06-15T16:34:35.503 回答