Skip to content

Latest commit

 

History

History
225 lines (163 loc) · 8.38 KB

File metadata and controls

225 lines (163 loc) · 8.38 KB

ㄷㄷㄷ 학습

Use Case

📚 질문

UC-01 : 질문 작성

설명
사용자는 제목과 내용을 입력하여 새로운 질문을 작성한다.
질문은 저장되며, 작성자는 로그인한 회원의 ID로 설정된다. 생성일은 DB의 현재 시간이 자동으로 입력된다.

제약 조건

  • 제목: 50자 이내, 필수
  • 내용: 300자 이내, 필수

응답

  • 성공 시: 201 Created, { "questionId": 1 }

예외

상황 응답 코드 메시지
로그인되지 않은 사용자 401 Unauthorized 인증되지 않은 사용자입니다.
제목/내용 누락 또는 길이 초과 400 Bad Request 제목 또는 내용의 형식이 잘못되었습니다.

UC-02 : 질문 수정

설명
사용자는 본인이 작성한 질문의 제목과 내용을 수정할 수 있다.
수정된 질문은 저장되며, 식별자가 응답된다.

제약 조건

  • 제목: 50자 이내, 필수
  • 내용: 300자 이내, 필수

응답

  • 성공 시: 200 OK, { "questionId": 1 }

예외

상황 응답 코드 메시지
인증되지 않은 사용자 401 Unauthorized 로그인 후 이용해주세요.
본인이 작성하지 않은 질문 403 Forbidden 해당 질문을 수정할 권한이 없습니다.
제목/내용 누락 또는 길이 초과 400 Bad Request 제목 또는 내용의 형식이 잘못되었습니다.

UC-03 : 질문 삭제

설명
사용자는 본인이 작성한 질문을 삭제할 수 있다.
삭제된 질문은 비활성화 처리되어 타 사용자에겐 보이지 않는다.

응답

  • 성공 시: 204 No Content

예외

상황 응답 코드 메시지
인증되지 않은 사용자 401 Unauthorized 로그인 후 이용해주세요.
본인이 작성하지 않은 질문 403 Forbidden 해당 질문을 삭제할 권한이 없습니다.
존재하지 않는 질문 404 Not Found 질문을 찾을 수 없습니다.

UC-04 : 질문 페이징 조회

설명
사용자는 전체 질문 목록을 최신순으로 페이지 단위로 조회할 수 있다.

조회 조건 (쿼리 파라미터)

  • page: 페이지 번호 (0부터 시작)
  • size: 페이지 당 항목 수
  • (옵션) keyword: 제목 또는 내용 키워드 필터링

응답 필드 예시

{
  "questions": [
    {
      "questionId": 1,
      "title": "왜 하늘은 파란가요?",
      "writer": "궁금이",
      "likeCount": 12,
      "answerCount": 3,
      "createdAt": "2025-04-01T10:00:00"
    }
  ],
  "pageInfo": {
    "currentPage": 0,
    "totalPages": 5,
    "totalElements": 50
  }
}

UC-05 : 질문 상세 조회

설명
사용자는 특정 질문을 상세 조회할 수 있다.
조회 결과에는 제목, 내용, 작성자, 작성일, 좋아요 수, 답변 목록이 포함된다.

응답

  • 성공 시: 200 OK, 질문 상세 정보

예외

상황 응답 코드 메시지
존재하지 않는 질문 404 Not Found 질문을 찾을 수 없습니다.
비활성화된 질문 403 Forbidden 해당 질문은 볼 수 없습니다.

UC-06 : 질문 좋아요

설명
사용자는 특정 질문에 좋아요를 누를 수 있다.
같은 질문에 다시 누르면 좋아요가 취소된다.
본인의 질문에도 좋아요를 누를 수 있다.

응답

  • 성공 시: 200 OK, { "liked": true } 또는 { "liked": false }

예외

상황 응답 코드 메시지
인증되지 않은 사용자 401 Unauthorized 로그인 후 이용해주세요.
존재하지 않는 질문 404 Not Found 질문을 찾을 수 없습니다.

📚 답변

UC-07 : 답변 작성

설명
사용자는 특정 질문에 답변을 남길 수 있다.
답변은 저장되며, 작성자는 로그인한 회원 ID로 설정된다. 생성일은 DB에 의해 자동 입력된다.

제약 조건

  • 내용: 300자 이내, 필수

응답

  • 성공 시: 201 Created, { "answerId": 1 }

예외

상황 응답 코드 메시지
로그인되지 않은 사용자 401 Unauthorized 로그인 후 이용해주세요.
내용 누락 또는 300자 초과 400 Bad Request 답변 내용이 유효하지 않습니다.
존재하지 않는 질문 404 Not Found 질문을 찾을 수 없습니다.

UC-08 : 답변 수정

설명
사용자는 본인이 작성한 답변을 수정할 수 있다.
수정된 답변은 저장되며, 식별자가 응답된다.

제약 조건

  • 내용: 300자 이내, 필수

응답

  • 성공 시: 200 OK, { "answerId": 1 }

예외

상황 응답 코드 메시지
인증되지 않은 사용자 401 Unauthorized 로그인 후 이용해주세요.
본인이 작성하지 않은 답변 403 Forbidden 해당 답변을 수정할 권한이 없습니다.
내용 누락 또는 길이 초과 400 Bad Request 답변 내용이 유효하지 않습니다.

UC-09 : 답변 삭제

설명
사용자는 본인이 작성한 답변을 삭제할 수 있다.
삭제된 답변은 DB에서 바로 제거되지 않고 비활성화되어 타 사용자에게 보이지 않는다.

응답

  • 성공 시: 204 No Content

예외

상황 응답 코드 메시지
인증되지 않은 사용자 401 Unauthorized 로그인 후 이용해주세요.
본인이 작성하지 않은 답변 403 Forbidden 해당 답변을 삭제할 권한이 없습니다.
존재하지 않는 답변 404 Not Found 답변을 찾을 수 없습니다.

UC-10 : 답변 좋아요

설명
사용자는 특정 답변에 좋아요를 누를 수 있다.
같은 답변에 다시 누르면 좋아요가 취소된다.
본인이 작성한 답변에도 좋아요를 누를 수 있다.

응답

  • 성공 시: 200 OK, { "liked": true } 또는 { "liked": false }

예외

상황 응답 코드 메시지
인증되지 않은 사용자 401 Unauthorized 로그인 후 이용해주세요.
존재하지 않는 답변 404 Not Found 답변을 찾을 수 없습니다.

👤 회원

UC-11 : 회원가입

설명
사용자는 이메일, 비밀번호, 이름, 전화번호, 닉네임을 입력하여 회원가입할 수 있다.
가입 시 입력 정보는 저장되며, 성공 시 사용자 식별자(userId)가 응답된다.

입력 필드 및 제약

항목 설명 제약 조건
email 로그인용 이메일 RFC 5322 이메일 형식, 중복 불가
password 로그인 시 사용하는 비밀번호 영문/숫자/특수문자 포함, 8~20자
name 실명 한글/영문, 2~20자
phoneNumber 연락처 숫자만, 10~11자리
nickname 닉네임 특수문자 제외, 2~15자, 중복 불가

응답

  • 성공 시: 201 Created, { "userId": 1 }

예외

상황 응답 코드 메시지
필수 입력값 누락 400 Bad Request 모든 필드를 입력해주세요.
이메일 형식 오류 400 Bad Request 이메일 형식이 올바르지 않습니다.
비밀번호 정책 위반 400 Bad Request 비밀번호 형식이 유효하지 않습니다.
중복된 이메일/닉네임 409 Conflict 이미 존재하는 이메일 또는 닉네임입니다.

UC-12 : 로그인

설명
사용자는 이메일과 비밀번호를 입력하여 로그인할 수 있다.
로그인 성공 시 액세스 토큰이 응답 헤더에 포함되어 반환된다.

입력 필드

항목 설명 제약 조건
email 가입한 이메일 이메일 형식 필수
password 등록된 비밀번호 비밀번호 정책 동일 적용

응답

  • 성공 시: 200 OK
    • 헤더: Authorization: Bearer <JWT 토큰>
    • 바디: { "userId": 1, "nickname": "궁금한사람" }

예외

상황 응답 코드 메시지
이메일 또는 비밀번호 불일치 401 Unauthorized 로그인 정보가 올바르지 않습니다.
존재하지 않는 계정 404 Not Found 해당 이메일로 등록된 사용자가 없습니다.
입력값 누락 400 Bad Request 이메일과 비밀번호는 필수입니다.