작성
·
236
0
안녕하세요, 과제를 마쳤는데 더 효율이 좋은 코드가 있을 것 같아서 리뷰 좀 부탁드립니다.
name과 joinDate를 바꿔봤습니다.
public User updateUser(int id, User user) {
User updateUser = findOne(id);
if (findOne(id) != null) {
updateUser.setName(user.getName());
updateUser.setJoinDate(new Date());
return updateUser;
}
return null;
}
@PutMapping("/users/{id}")
private User updateUser(@PathVariable int id, @RequestBody User user) {
User updateUser = service.updateUser(id, user);
if (updateUser == null) {
throw new UserNotFoundException(String.format("ID[%s] not found", id));
}
return updateUser;
}
| 설명
| 테스트
http://localhost:8088/users/1
| 의문
코드가 틀렸거나, 설명을 참고하여 제가 잘 못 알고 있는 점이 있다거나, 개선점이 있다면 알려주시면 감사하겠습니다.
다른 과제 글 찾아보니 JPA로 하라는 말씀도 하시는 것 같은데 JPA말고 수업 중 사용한 본연의 코드 정도만 활용해서 해보고 싶습니다.
감사합니다.!
답변 1
1
안녕하세요, 이도원입니다.
올려주신 PUT 예제에서는 DB를 사용하지 않고 있어서, 전체 데이터를 Full scan해서 데이터를 검색해야 할 것 같습니다. 작업하신 내용에 크게 수정할 내용은 없는 것 같습니다.
추가로, PathVariable에 대한 부분은 PUT요청에서 사용자에 대한 수정을 위한 ID는 URI로 전달 받고, 그외 수정할 데이터를 Request Body로 전달 받도록 역할을 구분하였습니다. Request Body에서 모든 데이터를 다 전달 받을 수도 있지만, URI에서 세부적인 ID를 전달 받음으로써 데이터의 검색을 처리하고, 수정이나 추가 작업을 위해 Request Body를 분리하는 것이 RMM(Richardson Maturity Model)에 더 적합한 형태가 될 것 같습니다.
감사합니다.
감사합니다.!