-
Notifications
You must be signed in to change notification settings - Fork 3
API 설계
komskoms edited this page Jun 21, 2022
·
9 revisions
최초 로그인의 경우 - 사진 업로드 + 닉네임 설정 페이지
- isSigned(가입되어있는지, 아닌지)
- 닉네임 중복체크 요청 : string (최소 2자, 최대 8자) => 프론트에서도 체크하지만 백에서도 체크해야함 응답 : Boolean
- 유저 등록 post 요청 : 사진(바이너리), 닉네임(string) 응답 : (닉네임 재 체크 후) true, false
2차인증 활성화한 경우
- isSecondAuth(2차인증 활성화 여부)
메인 페이지 - 게임 리스트
- 게임방 목록 [ { gameId: number | string, roomTitle: string, playerCount: number, isPublic: boolean, isStart: boolean, }, // ... ]
- 유저리스트 [ { userId: number | string, nickname: string, isOnline: boolean, isGaming: boolean, isFriend: boolean, }, // ... ]
- 로그인한 유저 프로필 { userId: number | string, nickname: string, level: number, profileImage: string, isSecondAuth: boolean, record: { general: { win: number, lose: number, }, ladder: { win: number, lose: number, } } }
메인 페이지 - 채팅 리스트
- 채팅방 목록 [ { chatId: number | string, roomTitle: string, playerCount: number, isPublic: boolean, isEntered: boolean }, // ... ]
메인 페이지 - 프로필 보기
- Id나 nickname 으로 요청시 [ { userId: number | string, nickname: string, isOnline: boolean, isGaming: boolean, isFriend: boolean, isBlock: boolean }, // ... ]
채팅페이지
- Message ? 는 옵셔널이지만 isBroadcast가 true일때만 from 빼기 [ { id: number; isBroadcast: boolean; from?: { id: number; nickname: string; profileImage: string; }; message: string; fromUser: boolean; createdAt: string | number; }, ] 배열은 기존 대화 불러올때, 이후 소켓으로 메세지 추가될때마다는 배열이 아닌 객체로 보내주면 될 것 같습니다
- 방 ID로 구분 유저리스트 [ { userId: number | string, nickname: string, role: string(owner | manager| none) }, // ... ]
방 소유자 - 프로필보기
- 불러오기 [ { userId: number | string, nickname: string, isOnline: boolean, isGaming: boolean, isFriend: boolean, isBlock: boolean, role: string(owner | manager | none) isMuted: boolean }, // ... ]
login
parameter
{
"code": string
}
return
{
"data": {
"token": string,
"isSigned": bool,
"secondAuth": bool,
},
"success": bool,
"messgae": string
}
/nickname/{nickname}
parameter
{
}
return
{
"data": {
"isExist": bool
},
"success": bool,
"messgae": string
}
/user
/user
본인 데이터의 경우
POST
body
{
"nickname": string,
"imageData": {}
}
return
{
"success": bool,
"messgae": string
}
PUT body
{
"nickname": string,
"imageData": {}
}
nickname or imageData return
{
"success": bool,
"messgae": string
}
/user/{id}
다른 유저의 경우
GET
parameter
{
}
return
{
"data": {
"nickname": string,
"level": number,
"score": [1, 1], // 승, 패
"radder": [number, number],
"profileImage": string,
},
"success": bool,
"messgae": string
}
/user/detail
/user/detail/{id}
parameter
{
"chattingRoomId": string | number
}
return
{
"data": {
"isFriend": bool,
"isBlocked": bool,
"role": number,
},
"success": bool,
"messgae": string
}
/record
/record
parameter
{
}
return
{
"data": [
{
"isRadder": bool,
"score": bool,
"opponent": string
},
{...}
],
"success": bool,
"messgae": string
}
최신순, 최대 10개까지
GET
users/email
parameter
{
"email" : string
}
return
bool
POST
users/emailVerify
parameter
"code" : number
return
"success" : bool
POST
users/emailAuthSetup
parameter
return
socket으로 관리해야하는 데이터
- 전체 유저 리스트
- (온라인, 오프라인, 게임중)
- 전체 게임방 리스트
- 게임중, 대기중
- 인원수
- 방 제목
- 비공개, 공개
- 전체 채팅방 리스트
- 인원수
- 방 제목
- 비공개, 공개
- 참여중인 채팅방 리스트
- 인원수
- 방 제목
- 비공개, 공개
- 채팅방
- 참여 유저 리스트
- 방 소유자/ 관리자
- 게임방
- request body
{
// user informations //
"token": string
}
- query parameters
- response body
{
"success": bool,
"message": string
}
...
- request body
{
"key": "value",
}
- query parameters
- parameter1
- type: string
- required: true
- default: "test"
- description: "use for get access token"
- parameter2
- type: number
- required: false
- default: 42
- description: memo
- response body
{
"key": "value",
}