SNS 서버
SNS 서버를 생성합니다.
회원가입 / 로그인 / 로그아웃
•
유저는 회원가입을 수행합니다.
◦
회원가입시 유저네임, 이메일, 비밀번호를 입력받습니다.
◦
비밀번호검증절차는 생략합니다.
•
로그인 시 AT 와 RT 을 생성합니다.
◦
AT 는 헤더에 넣고, RT 는 쿠키에 넣어 전송합니다.
•
로그아웃 시 저장된 토큰을 전부 삭제합니다.
게시글
게시글 CRUD
•
게시글을 생성할 수 있습니다.
•
게시글을 수정할 수 있습니다.
•
게시글을 삭제할 수 있습니다.
게시글 상세와 리스트
•
로그인 유저의 게시글 리스트를 페이징 처리하여 반환합니다.
•
특정 게시글 상제보기를 할 수 있습니다.
각종 카운트
•
게시글 상세를 했을 때, 뷰 카운트가 증가합니다.
•
좋아요 카운트를 증가하는 요청을 했을 때 , 카운트가 증가 합니다.
•
공유 하기 요청을 했을 때, 카운트가 증가 합니다.
해시태그
•
특정 게시글에 해시태그를 추가 해야 합니다.
•
특정 게시글의 특정 해시태그를 삭제 해야 합니다.
외부 요청
외부 요청 인증
•
피드서비스에서 특정 게시글에 관한 통계를 요청하면 토큰 인증을 거쳐야 합니다.
•
요청이 들어오면 바로 토큰 인증 단계를 거칩니다.
◦
요청 헤더에 Instagram 헤더가 없으면 ‘유효하지 않은 요청입니다.’ 메세지를 반환합니다.
◦
요청 헤더에 Instagram 헤더가 있으나 토큰이 만료 되었다면 재요청을 받을 수 있도록 redirect url 을 반환합니다.
•
생성된 토큰을 통해 재요청을 합니다.
외부 요청 처리
•
피드서비스에서 특정 게시글에 관한 통계를 요청하면 알맞게 처리해야 합니다.
•
queryDsl 을 이용하여 알맞은 게시글을 반환합니다.
◦
쿼리 파라미터를 이용하여 요청 게시글을 반환합니다.
query | 속성 | default(미입력 시 값) | 설명 |
hashtag | string | 본인계정 | |
type | string (열거형) | 필수 값 | date, hour |
start | date | 오늘로 부터 7일전 | 2023-10-01 과 같이 데이트 형식이며 조회 기준 시작일을 의미합니다. |
end | date | 오늘 | 2023-10-25 과 같이 데이트 형식이며 조회 기준 시작일을 의미합니다. |
value | string | count | count , view_count, like_count, share_count 가 사용 가능합니다. |
◦
?value=count&type=date
▪
start ~ end 기간내 (시작일, 종료일 포함) 해당 hashtag 가 포함된 게시물 수를 일자별로 제공합니다.
▪
최대 한달(30일) 조회 가능합니다.
◦
?value=count&type=hour
▪
start ~ end 기간내 (시작일, 종료일 포함) 해당 hashtag 가 포함된 게시물 수를 시간별로 제공합니다.
▪
start 일자의 00시 부터 1시간 간격
▪
최대 일주일(7일) 조회 가능합니다.
FEED 서비스
네 개의 SNS 중 충족하는 게시글을 전부 확인 할 수 있는 서비스 입니다.
회원가입
•
유저는 회원가입을 수행합니다.
◦
회원가입시 유저네임, 이메일, 비밀번호를 입력받습니다.
◦
비밀번호검증 (유저의 편의를 위해 아래 세가지만 검증하도록 하였습니다.)
▪
비밀번호는 최소 10자 이상이어야 합니다.
▪
숫자로만 이루어진 비밀번호는 사용할 수 없습니다.
▪
숫자, 대문자, 특수문자 중 2가지 이상을 포함해야 합니다.
•
회원가입 시 이메일 인증 버튼을 누릅니다.
◦
메일로 온 코드의 일치여부를 확인합니다.
◦
일치하면 나머지 요소들을 합쳐 회원가입을 완료 합니다.
일반 로그인 / 로그아웃
•
로그인 시 AT 와 RT 을 생성합니다.
◦
AT 는 헤더에 넣고, RT 는 쿠키에 넣어 전송합니다.
•
로그아웃 시 저장된 토큰을 전부 삭제합니다.
회원 승인 메일 서비스
•
6 자리의 인증 코드를 생성하여 유저 이메일로 전송합니다.
•
유저의 id 에 prefix 로 auth 를 붙여 id:authCode 를 레디스에 저장합니다.
◦
레디스에 값이 제대로 저장 되는지 검증을 거칩니다.
▪
제대로 저장되지 않은 경우 예외를 던지고 다시 재요청을 하도록 유도합니다.
•
승인 요청시 이를 꺼내어 확인 후 승인요청 과정을 거칩니다.
◦
레디스에 값이 없다면 예외를 던집니다.
◦
만료되었을 경우 예외를 던지고 다시 재요청을 하도록 유도합니다.