Spring Level 3 요구 조건

song yuheon·2023년 9월 2일
0

Spring

목록 보기
33/93
post-thumbnail

1. 회원 가입 API


  • 회원 가입은 Client에서 username과 password를 전달받아 이루어진다.
  • username은 최소 4자 이상, 10자 이하로, 알파벳 소문자(a~z)와 숫자(0~9)로만 구성되어야 한다.
  • password는 최소 8자 이상, 15자 이하이며 알파벳 대소문자(a~z, A~Z), 숫자(0~9), 특수문자로만 구성되어야 한다.
  • DB에 동일한 username이 존재하지 않는다면, 해당 회원 정보를 저장한다. 저장에 성공하면, Client에 상태 코드와 함께 성공 메시지를 반환한다.
  • 회원에게는 USER와 ADMIN 두 가지 권한 중 하나를 부여한다. 특히, ADMIN 권한을 가진 회원은 모든 게시글과 댓글을 수정하거나 삭제할 수 있다.
  • 참고자료:
    1. mangkyu's blog
    2. 정규 표현식 - 위키백과
    3. bamdule's blog

2. 로그인 API


  • 로그인은 Client에서 username과 password를 전달받아 이루어진다.
  • DB에서 해당 username에 대한 회원 정보의 존재 유무를 확인한 후, 일치하는 회원이 있다면 password를 비교한다.
  • 로그인에 성공하면 JWT를 활용하여 토큰을 발급한다. 이후 발급된 토큰을 Header에 포함시켜 성공 메시지와 함께 상태 코드를 Client에 반환한다.

3. 댓글 관련 API


  • 댓글 작성: 토큰의 유효성을 확인한 후, 해당 토큰이 유효하다면 선택된 게시글에 댓글을 작성한다. 게시글이 DB에 존재하는 경우, 댓글을 등록하고 해당 댓글을 반환한다.

  • 댓글 수정: 토큰을 검사한 후, 해당 토큰이 유효하며 해당 사용자가 작성한 댓글이라면 댓글을 수정한다. 댓글이 DB에 존재하는 경우, 댓글을 수정하고 수정된 댓글을 반환한다.

  • 댓글 삭제: 토큰을 검사한 후, 해당 토큰이 유효하며 해당 사용자가 작성한 댓글이라면 댓글을 삭제한다. 댓글이 DB에 존재하는 경우, 삭제에 성공한 후 성공 메시지와 함께 상태 코드를 Client에 반환한다.


4. 예외 처리


  • 토큰이 필요한 API 요청 시, 토큰을 전달받지 않았거나 정상적인 토큰이 아닌 경우, "토큰이 유효하지 않습니다." 라는 에러 메시지와 함께 상태 코드 400을 반환한다.
  • 토큰이 유효하더라도 해당 사용자가 작성한 게시글/댓글이 아닌 경우, "작성자만 삭제/수정할 수 있습니다."라는 에러 메시지와 함께 상태 코드 400을 반환한다.
  • 이미 DB에 존재하는 username으로 회원 가입을 시도하는 경우, "중복된 username 입니다." 라는 에러 메시지와 함께 상태 코드 400을 반환한다.
  • 로그인 시, 입력된 username 혹은 password가 일치하지 않는 경우, "회원을 찾을 수 없습니다."라는 에러 메시지와 함께 상태 코드 400을 반환한다.

5. 게시글 관련 API


  • 전체 게시글 조회: 전체 게시글의 제목, 작성자명(username), 작성 내용, 작성 날짜를 내림차순으로 정렬하여 조회한다. 각 게시글에 등록된 모든 댓글도 함께 반환하며, 댓글 역시 작성 날짜 기준으로 내림차순으로 정렬한다.

  • 게시글 작성: 토큰의 유효성을 검사한 후, 유효한 토큰이라면 제목, 작성자명(username), 작성 내용을 DB에

    저장한다. 저장된 게시글 정보를 Client에 반환한다.

  • 선택한 게시글 조회: 특정 게시글의 제목, 작성자명(username), 작성 날짜, 작성 내용을 조회한다. 해당 게시글에 등록된 모든 댓글도 함께 반환하며, 댓글 역시 작성 날짜 기준으로 내림차순으로 정렬한다.

  • 게시글 수정: 토큰을 검사한 후, 해당 토큰이 유효하며 해당 사용자가 작성한 게시글이라면 제목과 작성 내용을 수정한다. 수정된 게시글 정보를 Client에 반환한다.

  • 게시글 삭제: 토큰을 검사한 후, 해당 토큰이 유효하며 해당 사용자가 작성한 게시글이라면 해당 게시글을 삭제한다. 삭제에 성공한 후 성공 메시지와 함께 상태 코드를 Client에 반환한다.

profile
backend_Devloper

0개의 댓글