🍃 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));
}
}
사용자 수정 기능 추가 (과제)
- 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;
}
- Controller 클래스에 추가작업
- @PutMapping 어노테이션을 추가하여 HTTP PUT method 호출
- URI값에는 "/users/modify"
- Map<String, String>을 사용하여 DTO를 만들지 않고 RequestBody로 입력받음 (https://velog.io/@shson/%EC%8A%A4%ED%94%84%EB%A7%81-controller%EC%97%90%EC%84%9C-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0%EB%A5%BC-%EB%B0%9B%EB%8A%94-%EB%8B%A4%EC%96%91%ED%95%9C-%EB%B0%A9%EB%B2%95-RequestParam-RequestBody-PathVariable <- 링크참고 )
@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;
}