오늘은 이전 포스팅에 이어서 수정/삭제 기능을 추가해 보겠습니다.
이번 포스팅까지 마무리로 RESTful API 기반으로 CRUD 기능은 모두 끝날 거 같습니다.
RESTful API 기반으로 기능 구현 알아보시는 분들은 아래 포스팅도 참고해 보시면 좋을 거 같습니다.
Controller
UserController에 업데이트/수정을 위한 두 개의 컨트롤러 메서드를 생성합니다.
@DeleteMapping("/users/{id}")
public void deleteUser(@PathVariable int id){
User user = service.deleteMyId(id);
if (user == null){
throw new UserNotFoundException(String.format("ID[%s] not found",id));
}
}
@PutMapping("/users/{id}")
public User putUser(@PathVariable int id ,@RequestBody User user){
service.putMyid(id,user);
return user;
}
'deleteUser' 메서드는 "/users/{id}" 경로를 엔드포인트로 매핑합니다. 삭제할 사용자의 ID 값을 매개 변수로 받아서 service단에 요청을 보내주고 요청받은 ID 값이 사용자가 없는 경우 UserNotFoundException을 발생시킵니다. 이는 사용자가 요청한 ID에 해당하는 리소스가 없을 때 클라이언트에게 알리는 용도로 사용됩니다.
'putUser' 메서드는 업데이트할 사용자의. ID와 업데이트할 사용자 정보 'User' 매개 변수로 받습니다.
이전 POST HTTP Method에서 설명드렸던 @PathVariable 어노테이션을 사용하여 URL 경로에서 추출한 id 변수에 매핑하고 @RequestBody 어노테이션을 통해 클라이언트에서 보낸 JSON 형태의 데이터가 User 객체로 자동으로 매핑되도록 설정됩니다.
service단을 통해 받은 'id' 값과 'user' 객체를 사용하여 해당 ID에 사용자 정보를 업데이트를 하고 user 객체를 리턴합니다.
다음으로 Service 단 코드를 보겠습니다.
Service
public User deleteMyId(int id){
Iterator<User> iterator = users.iterator();
while (iterator.hasNext()){//순차적으로
User user = iterator.next();
if (user.getId() == id){ // 동일한 id가 있다면 remove(삭제)
iterator.remove();
return user;
}
}
return null;
}
public User putMyid(int id, User user) {
users.stream()
.forEach(userid -> {
if (userid.getId() == id){
userid.setName(user.getName());
userid.setJoinDate(user.getJoinDate());
}
});
return user;
}
순차적으로 Delete 메서드를 먼저 보자면, 'users' 리스트에 저장된 사용자 정보를 순차적으로 검사하며, 'Iterator'를 사용하여 요소에 접근합니다.
이전 포스팅에서 Iterator의 개념에 대해 알아봤습니다. 아래글을 참고해 보시면 좋을 거 같습니다.
각 사용자의 ID와 주어진 'id'를 비교하여 동일한 ID를 찾으면 해당 사용자를 'users' 리스트에서 삭제하고 삭제된 사용자 객체를 반환합니다. 만약 사용자를 찾지 못하면 null 값을 반환합니다.
다음으로는 사용자의 정보를 업데이트하는 putMyid 메서드입니다.
먼저 users 리스트를 스트림으로 변환하고, forEach를 사용하여 각 사용자에 접근하는 방식으로 코드 구현을 했습니다.
각 사용자의 ID와 주어진 'id'를 비교하여 동일한 ID를 찾으면, 해당 사용자의 이름과 가입일을 주어진 'user'객체의 이름과 가입일로 업데이트합니다.
이러한 방식으로 'deleteMyId' 메서드는 주어진 ID를 가진 사용자를 삭제하고, 'putMyid' 메서드는 주어진 ID를 가진 사용자의 정보를 업데이트합니다. 두 메서드 모두 'User' 객체를 반환하여 업데이트 또는 삭제된 사용자 정보를 확인할 수 있습니다.
마치며
오늘까지 간단한 RESTful API CRUD 기능 구현에 대해 알아봤습니다.
다음 포스팅은 위 코드 기반으로 JPA ORM 연동해서 진행해 보겠습니다.
'[ JAVA ] > JAVA RESTful API' 카테고리의 다른 글
[ RESTful API ] SimpleBeanPropertyFilter (0) | 2023.08.04 |
---|---|
[ RESTful API ] JPA 연동 - 사용자 CRUD 기능 구현 (0) | 2023.08.02 |
[ RESTful API ] 사용자 등록을 위한 API 구현 - POST HTTP Method (0) | 2023.07.27 |
[ RESTful API ] 사용자 목록 조회를 위한 API 구현 - GET HTTP Method (0) | 2023.07.25 |
[ RESTful API ] EntityModel 개념 및 예제 (0) | 2023.07.24 |