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는 아래 링크 사용하면 편하게 작성이 가능하다.

https://www.erdcloud.com/

 

ERDCloud

Draw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool.

www.erdcloud.com

 

요구사항

  1. 전체 게시글 목록 조회 API
    • 제목, 작성자명(username), 작성 내용, 작성 날짜를 조회하기
    • 작성 날짜 기준 내림차순으로 정렬하기
  2. 게시글 작성 API
    • 토큰을 검사하여, 유효한 토큰일 경우에만 게시글 작성 가능
    • 제목, 작성자명(username), 작성 내용을 저장하고
    • 저장된 게시글을 Client 로 반환하기
  3. 선택한 게시글 조회 API
    • 선택한 게시글의 제목, 작성자명(username), 작성 날짜, 작성 내용을 조회하기
  4. 선택한 게시글 수정 API
    • 토큰을 검사한 후, 유효한 토큰이면서 해당 사용자가 작성한 게시글만 수정 가능
    • 제목, 작성 내용을 수정하고 수정된 게시글을 Client 로 반환하기
  5. 선택한 게시글 삭제 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 }