TIL ⚓️/4주차_주특기 숙련(Spring)
TIL / 항해99 12기 36일차_230213_Mon
코이_CO2
2023. 2. 14. 18:50
Spring 숙련 주차 Lv2
하기 요구사항에 맞춰 ERD 및 API 명세서 작성 후 코드 구현 중~!
API 명세서를 티스토리 블로그 표로 그렸더니 이상하게 출력된다.
그래서 알아보니 API 명세 작성 툴로
- Excel
- Swagger
- gitbook
- Postman
대표적 4가지를 사용한다는데 깃북을 한 번 사용해봐야겠다.
ERD는 아래 링크 사용하면 편하게 작성이 가능하다.
ERDCloud
Draw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool.
www.erdcloud.com
요구사항
- 전체 게시글 목록 조회 API
- 제목, 작성자명(username), 작성 내용, 작성 날짜를 조회하기
- 작성 날짜 기준 내림차순으로 정렬하기
- 게시글 작성 API
- 토큰을 검사하여, 유효한 토큰일 경우에만 게시글 작성 가능
- 제목, 작성자명(username), 작성 내용을 저장하고
- 저장된 게시글을 Client 로 반환하기
- 선택한 게시글 조회 API
- 선택한 게시글의 제목, 작성자명(username), 작성 날짜, 작성 내용을 조회하기
- 선택한 게시글 수정 API
- 토큰을 검사한 후, 유효한 토큰이면서 해당 사용자가 작성한 게시글만 수정 가능
- 제목, 작성 내용을 수정하고 수정된 게시글을 Client 로 반환하기
- 선택한 게시글 삭제 API
- 토큰을 검사한 후, 유효한 토큰이면서 해당 사용자가 작성한 게시글만 삭제 가능
- 선택한 게시글을 삭제하고 Client 로 성공했다는 메시지, 상태코드 반환하기
ERD
API 명세서
기능 | API URL | Method | Request header |
Request | Response | Response header |
회원 가입 | /api/auth/signup | POST | { "username": "bin1234", "password": "Bin@12345" } | { "msg": "회원가입 성공", "statusCode": 200 } | ||
로그인 | /api/auth/login | POST | { "username": "bin1234", "password": "Bin@12345" } | { "msg": "로그인 성공", "statusCode": 200 } | Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJiaW4xMjM0IiwiZXhwIjoxNjY5ODcwNDUyLCJpYXQiOjE2Njk4NjY4NTJ9.mm8wgaV8M70hidhPX4Ut6UONZGaxjA1KnOJT1mO59Xc | |
게시글 작성 | /api/post | POST | Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJiaW4xMjM0IiwiZXhwIjoxNjY5ODcwNDUyLCJpYXQiOjE2Njk4NjY4NTJ9.mm8wgaV8M70hidhPX4Ut6UONZGaxjA1KnOJT1mO59Xc | { "title": "게시글5", "content": "내용5" } | { "id": 5, "title": "게시글5", "content": "내용5", "username": "bin1234", "createdAt": "2022-12-01T12:56:36.821474", "modifiedAt": "2022-12-01T12:56:36.821474" } | |
게시글 목록 조회 |
/api/posts | GET | { "postList": [ { "id": 1, "title": "게시글1", "content": "내용1", "username": "bin1234", "createdAt": "2022-12-01T12:52:06.729608", "modifiedAt": "2022-12-01T12:52:06.729608" }, { "id": 2, "title": "게시글2", "content": "내용2", "username": "bin1234", "createdAt": "2022-12-01T12:52:10.566505", "modifiedAt": "2022-12-01T12:52:10.566505" }, { "id": 3, "title": "게시글3", "content": "내용3", "username": "bin1234", "createdAt": "2022-12-01T12:52:16.773748", "modifiedAt": "2022-12-01T12:52:16.773748" }, { "id": 5, "title": "게시글4 삭제 내용5 수정", "content": "내용4 삭제 내용5 수정", "username": "bin1234", "createdAt": "2022-12-01T12:56:36.821474", "modifiedAt": "2022-12-01T12:59:25.681261" } ] } | |||
게시글 상세 조회 |
/api/post/{id} | GET | { "id": 1, "title": "게시글1", "content": "내용1", "username": "bin1234", "createdAt": "2022-12-01T12:52:06.729608", "modifiedAt": "2022-12-01T12:52:06.729608" } | |||
게시글 수정 | /api/post/{id} | PUT | Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJiaW4xMjM0IiwiZXhwIjoxNjY5ODcwNDUyLCJpYXQiOjE2Njk4NjY4NTJ9.mm8wgaV8M70hidhPX4Ut6UONZGaxjA1KnOJT1mO59Xc | { "title": "게시글 수정", "content": "내용 수정" } | { "id": 5, "title": "게시글4 삭제 내용5 수정", "content": "내용4 삭제 내용5 수정", "username": "bin1234", "createdAt": "2022-12-01T12:56:36.821474", "modifiedAt": "2022-12-01T12:56:36.821474" | |
게시글 삭제 | /api/post/{id} | DELETE | Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJiaW4xMjM0IiwiZXhwIjoxNjY5ODcwNDUyLCJpYXQiOjE2Njk4NjY4NTJ9.mm8wgaV8M70hidhPX4Ut6UONZGaxjA1KnOJT1mO59Xc | { "msg": "게시글 삭제 성공", "statusCode": 200 } |