gpt4 book ai didi

java - 重载包含不同路径变量类型的 RestController 方法

转载 作者:行者123 更新时间:2023-11-30 02:04:43 24 4
gpt4 key购买 nike

我遇到以下问题:

我有一个 Rest Controller ,我想在以下 URL 中配置它:

/api/districts/1,2,3 -(按 ID 数组列出地区)

/api/districts/1 -(按单个 ID 列出地区)

以下是映射方法:

@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public District getById(@PathVariable int id) {
// check input

return districtService.getById(id);
}

@RequestMapping(value = "/{districtIDs}", method = RequestMethod.GET)
public List<District> listByArray(@PathVariable Integer[] districtIDs) {
ArrayList<District> result = new ArrayList<>();

for (Integer id : districtIDs) {
result.add(districtService.getById(id));
}

return result;
}

这是我向 /api/districts/1,2,3 发出请求时遇到的错误

出现意外错误(类型=内部服务器错误,状态=500)。
映射到 HTTP 路径“http://localhost:8080/api/districts/1,2,3”的不明确处理程序方法:{public java.util.List com.groto.server.web.DistrictsController.listByArray(java.lang. Integer[]), public com.groto.server.models.hibernate.District com.groto.server.web.DistrictsController.getById(int)}

这是我向 /api/districts/1 发出请求时遇到的错误

出现意外错误(类型=内部服务器错误,状态=500)。
映射到 HTTP 路径“http://localhost:8080/api/districts/1”的不明确处理程序方法:{public java.util.List com.groto.server.web.DistrictsController.listByArray(java.lang.Integer[]) ,公共(public) com.groto.server.models.hibernate.District com.groto.server.web.DistrictsController.getById(int)}

最佳答案

在 Spring MVC 中,基于 PathVariable 类型的重载是不可能的,因为这两个 API 将被视为相同。在运行时,将为您提到的任何请求找到两个处理程序,因此会出现异常。

您可以删除 getById() 方法,第二个 API 也适用于单个 ID。唯一的区别是返回类型将是一个列表并且可以在客户端轻松处理。

关于java - 重载包含不同路径变量类型的 RestController 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51694302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com