스프링 부트로 로그인 기능이 없는 나만의 항해 블로그 백엔드 서버 만들기
과제 주의사항
- Entity를 그대로 반환하지 말고, DTO에 담아서 반환해주세요!
- 프론트엔드와 백엔드가 느슨하게 결합하는 환경이 ”최근에는” 더 일반적이라고 말씀드렸죠? 앞으로 남은 강의 예제와 실습에서는 html/css/js 즉 뷰도 같이 반환 하겠지만, 과제에는 여러분들이 서버 로직에 더 집중하실 수 있도록 JSON을 반환하는 API형태로 진행하려고 합니다.
- 눈으로 직접 확인 할 수 있었던 view와는 다르게, 여러분들이 과제를 진행하시려면 서버가 반환하는 결과값을 더 쉽게 확인 하실 수 있는 도구가 필요합니다. 바로 PostMan 입니다.
요구사항
- 아래의 요구사항을 기반으로 Use Case 그려보기
- 손으로 그려도 됩니다.
- cf. https://narup.tistory.com/70
- 전체 게시글 목록 조회 API
- 제목, 작성자명, 작성 내용, 작성 날짜를 조회하기
- 작성 날짜 기준 내림차순으로 정렬하기
- 게시글 작성 API
- 제목, 작성자명, 비밀번호, 작성 내용을 저장하고
- 저장된 게시글을 Client 로 반환하기
- 선택한 게시글 조회 API
- 선택한 게시글의 제목, 작성자명, 작성 날짜, 작성 내용을 조회하기 (검색 기능이 아닙니다. 간단한 게시글 조회만 구현해주세요.)
- 선택한 게시글 수정 API
- 수정을 요청할 때 수정할 데이터와 비밀번호를 같이 보내서 서버에서 비밀번호 일치 여부를 확인 한 후
- 제목, 작성자명, 작성 내용을 수정하고 수정된 게시글을 Client 로 반환하기
- 선택한 게시글 삭제 API
- 삭제를 요청할 때 비밀번호를 같이 보내서 서버에서 비밀번호 일치 여부를 확인 한 후
- 선택한 게시글을 삭제하고 Client 로 성공했다는 표시 반환하기
일단 use case 작성
API 명세서 작성
mothod | url | request | response |
post | /api/blog | { title : title, username : username, contents : contents, password : password } |
{ id : id, title : title, username : username, contents : contents, password : password, createdAt : createdAt, modifiedAt : modifiedAt } |
get | /api/blog | - | { { id : id, title : title, username : username, contents : contents, createdAt : createdAt, modifiedAt : modifiedAt } . . . } |
get | /api/blog/find | { id : id, contents : contentsContained, } |
{ id : id, title : title, username : username, contents : contents, createdAt : createdAt, modifiedAt : modifiedAt } |
put | /api/blog | { id : id, password : password, title : title2, username : username2, contents : contentes2, } |
{ id : id, title : title2, username : username2, contents : contentes2, createdAt : createdAt, modifiedAt : modifiedAt2 } |
delete | /api/blog | { id : id, password : password } |
{ deleted : true } |
3 Layer Architecture까지 모두 생성하고 실행을 해보니 finished with non-zero exit value 1에러가 발생했다.
=> memo 프로젝트를 8080포트에서 이미 실행시키고 있어서 생긴 오류였다.
만들긴 했는데 postMan에서 테스트 방법을 잘 모르겠다.
테스트 결과 제대로 시행됐다.
@DeleteMapping("/blog")
public ResponseEntity<String> deleteBlog(@RequestParam String password, @RequestParam Long id) {
blogService.deleteBlog(password, id);
return ResponseEntity.status(HttpStatus.OK).body("삭제 성공");
}
위와 같은 방법을 통해 Body에 메시지를 전달하는 방법도 알게 됐다.