【发布时间】:2022-01-23 06:40:45
【问题描述】:
我的控制器中有以下 2 个 GET 映射:
1. @GetMapping("/department/{deptId}/employee/{employeeId}")
public String func1(@PathVariable(value = "deptId", required = true) String deptId,
@PathVariable(value = "employeeId", required = true) String employeeId) { ... }
2. @GetMapping("/department/{deptId}/employee/{employeeId}/workLogs")
public String func2(@PathVariable(value = "deptId", required = true) String deptId,
@PathVariable(value = "employeeId", required = true) String employeeId) { ... }
当我触发 API 时:
GET http://localhost:8080/department/102/employee//workLogs --> 保持employeeId 为空白,此调用将映射到第一个GetMapping (func1),employeeId 计算为employeeId = "workLogs"。
因此,对于标记为必需且调用完成并以 200 OK 完成的缺少路径变量不会引发异常。
如何解决这个问题,使其正确映射到 func2,并因缺少所需的路径变量而引发异常。
【问题讨论】:
-
这是无法理解的,但是你怎么能期望得到基于空白员工ID的工作日志呢?无论如何,要避免这种问题,只需为
/worklog/{employeeId}创建一个带有getMethod的新Worklog控制器@ -
不,我不希望在空白的employeeId 上获得workLogs。我预计这里会抛出异常,因为缺少所需的路径参数@JAsgarov
标签: java spring-boot api exception controller