-
Notifications
You must be signed in to change notification settings - Fork 0
API
accessToken
- 서버에서 보낼 땐 req.body
에 담아주세요
- 클라이언트에서 보낼땐 req.headers['authorization']
에 담아주세요
- iat: 토큰 발급 일자
- exp: 토큰 만료 시간
- userId (or guestId)
- nickname (only LoginUser)
- email (only LoginUser)
refreshToken
- req.cookies
에 담아서 보내드립니다. 로그아웃 시 클라이언트에서 쿠키 삭제해주세요.
- iat
- exp
- userId (or guestId)
로그인 요청을 받으면, 사용자를 데이터베이스에서 확인하고 토큰을 발급한다
Request
{
email: email (string),
password: password (string)
}
Response
-
200: ok
coockie 옵션: sameSite: none, httpOnly: true, secure: true
// cookie { refreshToken: refreshToken } // payload { data: {accessToken: accessToken}, message: 'ok' }
-
404: Not Found
사용자의 이메일이나 비밀번호가 틀린 경우
{ message: '이메일 또는 비밀번호를 찾을 수 없습니다.' }
=> 소셜 로그인 구현하면서 추가 예정
⇒ 클라이언트 쪽에서 accessToken과 refreshToken 삭제
회원가입 요청
Request
{
email: email(string),
password: password(string),
nickname: nickname(string),
}
Response
-
201: Created
// payload { message: 'created' }
-
422: Unprocessable Enitity
이메일, 패스워드, 닉네임 중 빈칸이 있는 경우
{ message: '누락된 값이 있습니다.' }
-
409: Conflict
이메일이 이미 있는 경우
{ message: '해당 이메일은 이미 존재합니다.' }
게스트에게 임시 아이디를 발급하고, 웨이팅룸으로 리다이렉션
Response
-
200: ok
coockie 옵션: sameSite: none, httpOnly: true, secure: true
// cookie { refreshToken: refreshToken } // payload { data: {accessToken: accessToken}, message: 'ok' }
방 이름을 보내면 해당 방을 만들고 해당 방으로 입장시킨다
Request
// request header
{
authorization: accessToken
}
// payload
{
room_name: room_name (string)
}
Response
-
200: ok
데이터베이스 갱신 & 사용자 리다이렉팅
// payload { message: 'ok' }
-
401: Unauthorized
로그인하지 않은 사용자(=req.headers.authorization에 accessToken이 없는)인 경우
{ message: '로그인하지 않은 사용자입니다.' }
기존에 만들어진 방에 참여한다.
Request
// request header
{
authorization: accessToken
}
// payload
{
room_name: null,
room_id: null
// 후에 기능 추가해서 특정 방에 들어가고자 하는 경우를 위해 일단 넣어둠.
// bare minimum에서는 null로 설정하면 랜덤으로 방에 들어감
}
Response
-
200: ok
// payload { message: 'ok' }
-
**404: Not Found**
방이 하나도 없는 경우
{ message: '만들어진 방이 없습니다.' }
유저의 팔로워 목록을 가져온다. 각 팔로워의 id, email, nickname, profile을 가져온다.
Response
-
200: ok
// payload { data: { followers: [ { id, email, nickname, profile_image }, { id, email, nickname, profile_image }, ... ] }, message: 'ok' }
Response
-
200: ok
// payload { data: { followings: [ { id, email, nickname, profile_image }, { id, email, nickname, profile_image }, ... ] }, message: 'ok' }
특정 이메일을 가진 유저를 팔로우한다.
Request
// request header
{
authorization: accessToken
}
// payload
{
email: email // 팔로우 할 이메일
}
Response
-
200: ok
갱신된 팔로잉 목록을 리턴한다
// payload { data: { followers: [ { id, email, nickname, profile_image }, { id, email, nickname, profile_image }, ... ] }, message: 'ok' }
-
404: Not Found
해당 이메일을 사용한 유저를 찾지 못한 경우
// payload { message: '해당 이메일을 사용하는 유저가 없습니다.' }
기존에 팔로우하던 유저를 언팔로우한다.
Request
// request header
{
authorization: accessToken
}
// payload
{
email: email
}
Response
-
200: ok
갱신된 팔로잉 목록을 리턴한다
// payload { data: { followers: [ { id, email, nickname, profile_image }, { id, email, nickname, profile_image }, ... ] }, message: 'ok' }
-
404: Not Found
팔로우 하고 있지 않던 유저를 언팔로우 하는 경우
// payload { message: '팔로우하지 않은 유저를 언팔로우할 수 없습니다.' }
비밀번호를 변경한다
Request
// request header
{
authorization: accessToken
}
// payload
{
oldpwd: oldpwd, // 기존 패스워드
newpwd: newpwd // 바꾸고 싶은 패스워드
}
Response
-
200: ok
// payload { message: 'ok' }
-
401: Unauthorized
기존 패스워드를 틀린 경우
// payload { message: '기존 패스워드를 잘 못 입력하셨습니다.' }
-
422: Unprocessable Enitity
새 비밀번호를 공란으로 둔 경우
// payload { message: '패스워드는 공란으로 둘 수 없습니다.' }
이메일을 통해 사용자를 검색한다.
Response
-
200: ok
해당 이메일을 가진 유저 정보를 리턴한다
// payload { data: { userInfo: { id: id, email: email, nickname: nickname profile_image: profile_image } }, message: 'ok' }
-
404: Not Found
해당 이메일을 사용한 유저를 찾지 못한 경우
// payload { message: '해당 이메일을 사용하는 유저가 없습니다.' }