https://maeilcoding.tistory.com/117
예제 - 유저관리 API GET All
https://maeilcoding.tistory.com/116 예제 - 유저관리 API GET idhttps://maeilcoding.tistory.com/115 Controller, DAO, DTO 알아보기 // 예제 - 유저관리 API POSTDAO (Data Access Object) 란?데이터베이스나 기타 영속성 메커니즘에
maeilcoding.tistory.com
유저 정보를 수정하는 API를 만들어봅시다.
유저 이름과 이메일을 관리하는 API만들기 예제 // todo 4 updateUserInfo
1. 명세서 확인
2. Postman에 리퀘스트 작성
3. Controller에서 updateUserInfo 메서드 작성 시작
//todo 4 updateUser
@PutMapping("/api/users/{id}")
updateUser(@PathVariable long id, @RequestBody User user)
@PathVariable은 URL 경로에서 특정 부분을 추출하여 메서드의 파라미터로 바인딩하는 데 사용됩니다. 이를 통해 동적인 URL 경로를 처리할 수 있습니다.
@RequestBody는 HTTP 요청의 본문(body)에 있는 데이터를 Java 객체로 변환하는 역할을 합니다. 주로 JSON 형식의 데이터를 처리할 때 사용됩니다.
4. DAO에서 updateUserInfo 메서드 작성
//todo Put
public int updateUser(long id, User user) {
String sql = "UPDATE user\n" +
"SET name=?, email=?\n" +
"WHERE id=?;";
return jdbcTemplate.update(sql, user.getName(), user.getEmail(), id);
}
UPDATE user SET name=?, email=? WHERE id=?; sql쿼리를 실행
jdbcTemplate.update(sql, user.getName(), user.getEmail(), id)
sql쿼리를 실행하고 영향을 받은 행의 개수를 반환
업데이트 되면 1을 반환 (post와 작동원리가 같다)
5. 명세서 요구사항에 status만 필요로 한다. DTO는 만들어뒀던 UserResDTO로 충분
6. Controller 메서드 마저 완성
@PutMapping("/api/users/{id}")
public ResponseEntity<UserResDTO> updateUser(@PathVariable long id, @RequestBody User user) {
try {
int result = userDAO.updateUser(id, user);
if (result > 0) {
return ResponseEntity.status(200).body(new UserResDTO("success"));
} else {
return ResponseEntity.status(500).body(new UserResDTO("fail"));
}
} catch (Exception e) {
return ResponseEntity.status(400).build();
}
}