具有不同功能的java Spring REST控制器
我有一个Spring @RestController
来操纵我的用户,我想有几个功能:
- /用户:获取(返回所有用户)
- /users/:id:GET(返回具有给定id的用户,默认id=1)
- /用户:POST(插入用户)
- /users/:id:DELETE(删除具有给定id的用户)
我开始研究它,但我不确定如何管理同一方法的“重叠”URI(例如前两种情况)。以下是我到目前为止的收获:
@RestController
public class UserController {
@RequestMapping(value = "/users", method = RequestMethod.GET)
public List<User> getAllUsers() {
return UserDAO.getAll();
}
@RequestMapping(value = "/users", method = RequestMethod.GET)
public User getUser(@RequestParam(value = "id", defaultValue = "1") int id) {
return UserDAO.getById(id);
}
}
由于“模棱两可的映射”,这是行不通的,我也很清楚,但我不知道该怎么办。我应该更改其中一个URI还是有其他方法
编辑: 我还尝试将第二种方法改为:
@RequestMapping(value = "/users/{id}", method = RequestMethod.GET)
public User getUser(@PathVariable("id") int id) {
return UserDAO.getById(id);
}
还是不行
# 1 楼答案
您当前的映射:
将映射到
/users?id=42
而不是所需的/users/42
。如果要为/users/:id
端点创建映射,请使用以下命令:另外,从Spring Framework 4.3开始,您可以使用new meta annotations来处理
GET
、POST
等方法: