API Server 구성 (1) (Note entity, dto, service, controller, repository)
API Server 구성 (1) (Note entity, dto, service, controller, repository)
Spring Security 연동 (7) (자동 회원가입 후 처리, Remeber me) Spring Security 연동 (7) (자동 회원가입 후 처리, Remeber me) Spring Security 연동 (6) (소셜 로그인 처리 - ②) Spring Security 연동 (6) (소셜 로그인 처리 -
soohykeee.tistory.com
앞서 Note의 등록이 정상적으로 되는 것까지 확인했었다.
이번에는 Controller에 Get 방식으로 특정한 번호의 Note를 확인할 수 있는 기능을 추가해줄것이다.
@GetMapping(value = "/{num}", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<NoteDTO> read(@PathVariable("num") Long num) {
log.info("--------------read-----------------");
log.info(num);
return new ResponseEntity<>(noteService.get(num), HttpStatus.OK);
}
위의 read 메소드는 @PathVariable 어노테이션을 사용하여, 경로 (URL)에 있는 Note의 num을 얻어온 후, 해당 Note의 정보를 앞서 noteService에 생성했던 get을 이용하여 데이터를 가져온 후 반환한다.
Postman을 사용하여 정상적으로 데이터를 가져오는것을 확인할 수 있다.
이번엔 특정 이메일을 가진 회원이 작성한 모든 Note를 가져오는 기능을 추가해줄것이다.
그전에 NoteService에 getList를 이미 구현 했기에 아래의 코드만 추가해주면 된다.
@GetMapping(value = "/all", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<NoteDTO>> getList(String email) {
log.info("------------------getList----------------");
log.info(email);
return new ResponseEntity<>(noteService.getAllWithWriter(email), HttpStatus.OK);
}
List 형식으로 반환이 제대로 되는지 확인해보기 위해 그 전에, 작성했던 register 메소드를 실행하여 user10@zerock.org 가 작성한 Note를 하나 더 추가해 놓고, Postman으로 확인해보면 아래와 같이 정상적으로 user10@zeorck.org 유저가 작성한 Note들이 List 형식으로 반환되는것을 확인할 수 있다.
Note 삭제
@DeleteMapping(value = "/{num}", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> remove(@PathVariable("num") Long num) {
log.info("--------------remove---------------");
log.info(num);
noteService.remove(num);
return new ResponseEntity<>("removed", HttpStatus.OK);
}
코드작성 후, postman을 통해 실행해보면 기존에 num=3으로 작성되어있던 Note가 정상적으로 삭제되는 것을 확인할 수 있다.
Note 수정의 경우는 register 메소드와 달리 JSON 데이터에 num 속성을 포함시켜 전송해야한다. 그래야 수정하려는 Note를 알 수 있기 때문이다.
@PutMapping(value = "/{num}", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> modify(NoteDTO noteDTO) {
log.info("---------------modify-------------------");
log.info(noteDTO);
noteService.modify(noteDTO);
return new ResponseEntity<>("modified", HttpStatus.OK);
}