관리 메뉴

코딩하는 락커

[Spring Boot를 이용한 RESTful Web Services 개발] 17강 본문

🍃 Spring/🌱 Spring Boot를 이용한 RESTful Web Service

[Spring Boot를 이용한 RESTful Web Services 개발] 17강

락꿈사 2022. 2. 7. 17:43

사용자 삭제 기능 추가

  • 사용자 상세 조회 api와 같은 URI를 갖고 있음(https://coding-rocker.tistory.com/54 <- 링크 참고)
  • HTTP method 중 DELETE 호출
  • UserDaoService 클래스에 메소드 추가
public User deleteUser(int id){

    // 열거형 데이터(배열, 리스트 등)를 순차적으로 접근해서 사용하기 위한 데이터 형
    Iterator<User> iterator =  users.iterator();
    
    while(iterator.hasNext()){
        User user = iterator.next();
        
        if(user.getId() == id){
            iterator.remove();
            return user;
        }
    }
    
    return null;
}

 

  • Controller 클래스에 추가작업
  • @DeleteMapping 어노테이션을 추가하여 HTTP DELTE method 호출
  • URI값에는  "/users/{id}"
  • PathVariable 사용됐으므로 매개변수에 @PathVariable int id 추가
@DeleteMapping("/users/{id}")
public void deleteUser(@PathVariable int id){
    User user = service.deleteUser(id);

    if(user == null){
        throw new UserNotFoundException(String.format("ID[%s] not found", id));
    }
}

1번 사용자 delete
200 ok status code 확인
1번 사용자가 삭제된 것 확인

 

사용자 수정 기능 추가 (과제)

  • HTTP method 중 PUT 호출
  • UserDaoService 클래스에 메소드 추가
public User modifyUser(int id, String name){
    Iterator<User> iterator =  users.iterator();
    while(iterator.hasNext()){
        User user = iterator.next();
        if(user.getId() == id){
            user.setId(user.getId());
            user.setName(name);
            return user;
        }
    }
    return null;
}

 

@PutMapping("/users/modify")
public User modifyUser(@RequestBody Map<String, String> param){
    int id = Integer.parseInt(param.get("id"));
    String name = param.get("name");
    User modifiedUser = service.modifyUser(id, name);
    return modifiedUser;
}

PUT Method로 id와 name을 수정요청
id 1의 사용자 이름이 roxy에서 newUser로 변경된 것 확인

Comments