我有一个春天@RestController
操纵我的用户,我想有几个功能:
弹簧安置控制器具有不同的功能
- /用户:GET(返回所有用户)
- /用户/:ID :GET(返回与给定的ID,默认ID = 1的用户)
- /用户:POST(插入用户)
- /用户/: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 = "https://stackoverflow.com/users/{id}", method = RequestMethod.GET)
public User getUser(@PathVariable("id") int id) {
return UserDAO.getById(id);
}
还不行。
如果你想映射想要的'/ users /:id',你应该定义一个'@RequestMapping(value =“/ users/{id}”,method = RequestMethod.GET)'并且用{{id}一个'@PathVariable int id'。 –
@AliDehghani看看我的编辑...它仍然不起作用 – vtomic85
你是什么意思'仍然无法正常工作..'?如果得到任何异常,请发布完整的堆栈跟踪... –