如何将 ID(参数)用于不同的 GetMappings
How can I use ID(arguments) to different GetMappings
当我尝试 localhost:8080/api/employees 时,我得到一个列表(JSON-格式)。我还想通过 ID 获得一名员工。当我尝试 localhost:8080/api/123abc 时,我找不到具有该 ID 的员工。我的回复是:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Tue Jul 28 08:50:28 CEST 2020 There was an unexpected error (type=Not
Found, status=404).
我的代码在下面
@RestController
@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE)
public class TestApiController {
@Autowired
private EmployeePoller poller;
@GetMapping(path = "/employees")
public List<Employee> allEmployees() {
return poller.getAllEmployees();
}
@GetMapping(path = "/{id}")
public Employee singleEmployee(@PathVariable String id) {
return poller.getEmployeeById(id);
}
编辑:@PathVariable Long id
和 poller.getEmployeeById(id.toString());
也不起作用。
404 - 未找到可能是:
- GET /api/123abc 未在您的控制器中声明为端点。
- 没有 ID = 123abc 的员工。
要确认您的情况,请使用方法 OPTION 向 localhost:8080/api/123abc
发出新请求
如果响应为 404,则问题出在您的控制器上。如果响应为 200,则没有 ID 为 123abc 的员工。
我还看到您对两个端点使用相同的路径。尝试以下代码(它验证“id”变量是否为员工)。
@GetMapping(path = "/{id}")
public Employee getEmployee(@PathVariable(name = "id") String id) {
if ("employees".equals(id)) {
return poller.getAllEmployees();
} else {
return poller.getEmployeeById(id);
}
}
当我尝试 localhost:8080/api/employees 时,我得到一个列表(JSON-格式)。我还想通过 ID 获得一名员工。当我尝试 localhost:8080/api/123abc 时,我找不到具有该 ID 的员工。我的回复是:
Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback.
Tue Jul 28 08:50:28 CEST 2020 There was an unexpected error (type=Not Found, status=404).
我的代码在下面
@RestController
@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE)
public class TestApiController {
@Autowired
private EmployeePoller poller;
@GetMapping(path = "/employees")
public List<Employee> allEmployees() {
return poller.getAllEmployees();
}
@GetMapping(path = "/{id}")
public Employee singleEmployee(@PathVariable String id) {
return poller.getEmployeeById(id);
}
编辑:@PathVariable Long id
和 poller.getEmployeeById(id.toString());
也不起作用。
404 - 未找到可能是:
- GET /api/123abc 未在您的控制器中声明为端点。
- 没有 ID = 123abc 的员工。
要确认您的情况,请使用方法 OPTION 向 localhost:8080/api/123abc
发出新请求如果响应为 404,则问题出在您的控制器上。如果响应为 200,则没有 ID 为 123abc 的员工。
我还看到您对两个端点使用相同的路径。尝试以下代码(它验证“id”变量是否为员工)。
@GetMapping(path = "/{id}")
public Employee getEmployee(@PathVariable(name = "id") String id) {
if ("employees".equals(id)) {
return poller.getAllEmployees();
} else {
return poller.getEmployeeById(id);
}
}