java - 在 @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 种方法,从而避免代码重复。
解决方案
HttpServletRequest
作为参数添加到 Controller 方法,然后检查 url。
推荐阅读
- clojure - 如何在 deps.edn 项目中使用 cljsjs 包
- javascript - 是否可以通过免费帐户使用 firebase 进行网络抓取?
- sql-server - TSql 前面的反斜杠更改列值
- linux - 仅当行不存在时,如何将一行添加到不同子目录下的多个文本文件?
- arrays - 如何将数组值存储在 Postman 的环境变量中
- python - 使用 Bokeh 绘图时如何为多个数据集之一添加悬停工具
- java - 用 Java 调试我的字母等级计算器
- ansible - Ansible替换Windows文本文件中的所有出现 - win_lineinfile
- linux - “未能执行命令:权限被拒绝” Ubuntu 18.04.3 LTS
- bluetooth - 无法连接到树莓派上的 BLE 设备(gatttool/bluetoothctl)