20.10.14 15:50 작성
·
435
0
안녕하세요. 강의 정말 잘 듣고있습니다.
PutMapping 과제로 내주신거 한번 해봤는데 맞는지 확인좀 부탁드려도될까요??
기본적으로 수정이라 id는 알아야 할 것 같아서 @PathVariable 로 id를 받고 body에 넣어줄 user 값은 @Requestbody로 두번째 인수로 넣었습니다.
이런 방식으로 수정하는게 맞나요..?
//Controller 코드
@PutMapping("/users/{id}")
public ResponseEntity<User> updateUser(@PathVariable int id, @RequestBody User user) {
User updateUser = service.updateById(id, user);
if (updateUser == null) {
throw new UserNotFoundException(String.format("ID[%s] is not Found", id));
}
URI location = ServletUriComponentsBuilder.fromCurrentRequest()
.path("/{id}")
.buildAndExpand(updateUser.getId())
.toUri();
return ResponseEntity.created(location).build();
}
//Service 코드
@Override
public User updateById(int id, User user) {
for (User updateUser : userList) {
if (updateUser.getId() == id) {
userList.get(id-1).setName(user.getName());
userList.get(id-1).setJoinDate(user.getJoinDate());
return user;
}
}
return null;
}
답변 4
2
2020. 10. 18. 23:25
안녕하세요, 이도원입니다.
PUT 메소드에 대한 처리는 다음과 같이 하시면 될 것 같습니다. 참고로, Response 응답 코드로 201이 아닌, 200이나 204으로 하시는게 좋습니다.
@PutMapping("/users/{id}")
public ResponseEntity<Object> updateStudent(@RequestBody User user, @PathVariable int id) {
Optional<User> userOptional = userRepository.findById(id);
if (!userOptional.isPresent())
return ResponseEntity.notFound().build();
user.setId(id);
userRepository.save(user);
return ResponseEntity.noContent().build();
}
감사합니다.
0