Skip to content

API 명세서

Seungjae Lee edited this page Nov 15, 2022 · 15 revisions

명세서 원본 링크

https://www.notion.so/API-369d507bcd0c46298f18298975ea30fa

Web API

이름 API_URL Method Request Response Status
로그인 및 회원가입 /auth/login GET {
  “message”: "로그인 성공"
}
200
로그아웃 /auth/logout POST {
  user_id: 1,
}
{
  "message": "로그아웃 성공"
}
201
친구 등록 /friend POST {
  “my_email”: “[email protected]
  “friend_email”: “[email protected]
}
{
  “message”: “친구 등록 성공”
}
201
친구 삭제 /friend DELETE {
  “my_email”: “[email protected]
  “friend_email”: “[email protected]
}
{
  “message”: “친구 삭제 성공”
}
204
유저 정보 조회 /user/:id GET {
  "user_id": 1,
  "email": "mailto:[email protected]",
  "nickname": "japari",
  "score": 2000,
  "profile_image": "public/profile/default.jpg"
}
200
유저 정보 변경 /user/:id PUT {
  "user_id": 1,
  "email": "mailto:[email protected]",
  "nickname": "japari",
  "score": 2000,
  "profile_image": "public/profile/default.jpg"
}
{
  “message”: “유저 정보 변경 성공”
}
201
유저 정보 삭제 /user/:id DELETE { "user_id": 1 } {
  “message”: “유저 삭제 성공”
}
204
유저 목록 조회(친구, 랭킹) /user/list GET {
  "friend": [
    {
      "user_id": 1,
      "email": "[email protected]",
      "nickname": "japari",
      "score": 2000,
      "profile_image": "public/profile/1.jpg"
    },
    ...
  ],
  "ranking": [
    {
      "user_id": 32,
      "email": "[email protected]",
      "nickname": "monster",
      "score": 32000,
      "profile_image": "public/profile/2.jpg"
    },
    ...
  ]
}
200
게임 정보 목록 조회 /game GET [
  {
    "game_id": 1,
    "name": "CatchMind",
    "minimum_people": 2
  }, …
]
200

Socket Event

이름 이벤트 이름 데이터 송수신자 대상
로비페이지 채팅 보내기 chat_lobby {
  "sender": "nickname",
  "message": "안녕",
  "send_time": "2022-11-14 16:40"
}
클라이언트 → 서버
로비페이지 채팅 받기 chat_lobby {
  "sender": "nickname",
  "message": "안녕",
  "send_time": "2022-11-14 16:40"
}
서버 → 클라이언트 로비 페이지에 있는 모든 유저
대기방 / 인게임 채팅 보내기 chat_in_game {
  "sender": "nickname",
  "message": "안녕",
  "send_time": "2022-11-14 16:40"
}
클라이언트 → 서버
대기방 / 인게임 채팅 받기 chat_in_game {
  "sender": "nickname",
  "message": "안녕",
  "send_time": "2022-11-14 16:40"
}
서버 → 클라이언트 대기방 인원
[Interval] 접속 유저 목록 불러오기 get_online_user {
  "users": {
    "user_id": {
      "email": "email",
      "nickname": "nickname",
      “socket_id”: “9aef2340f”
    },
    "user_id2": {
      "email": "email",
      "nickname": "nickname",
      “socket_id”: “1234asdf”
    },
  }
}
서버 → 클라이언트 접속 중인 모든 유저
친구 추가 보내기 request_friend {
  "sender": 1,
  "receiver": 2
}
클라이언트 → 서버
친구 추가 받기 request_friend {
  "sender": 1,
  "receiver": 2
}
서버 → 클라이언트 친구 추가를 받은 유저
[Interval] 게임 방 목록 불러오기 get_game {
  “rooms”: [
    game_room_id: {
      “title”: “초보만”,
      "game_id": 1,
      "current_people": 2,
      "maximum_people": 8,
      "private": false,
    },
    game_room_id2: {
      “title”: “고수만”,
      "game_id": 2,
      "current_people": 3,
      "maximum_people": 8,
      "private": true,
    },
  ]
}
서버 → 클라이언트 로비 페이지에 있는 모든 유저
게임 방 참가 join_game {
  “game_room_id”: 1,
  “password”: ****,
  “user_id”: 2
}
클라이언트 → 서버
게임 방 나가기 exit_game {
  “game_room_id”: 1,
  “user_id”: 2
}
클라이언트 → 서버
게임 방 생성 create_game {
  "title": "초보만",
  "game_id": 1,
  "maximum_people": 8,
  "private": true,
  "password": "1q2w3e4r",
}
클라이언트 → 서버
게임 방 설정 변경 setting_game {
  "title": "초보만",
  "game_id": 1,
  "maximum_people": 8,
  "private": true,
  "password": "1q2w3e4r",
}
클라이언트 → 서버
게임 방 설정 및 참가자 정보 불러오기 get_game_info {
  “title”: “초보만”,
  "game_room_id": 1,
  "game_id": 1,
  "minimum_people": 2,
  "maximum_people": 8,
  "participants": ["user1", "user2", "user3", "user4"],
  "private": true
}
서버 → 클라이언트 #NAME?
게임 초대 보내기 invite_game {
  "game_room_id": 1,
  "sender": "sender_nickname",
  "receiver": "receiver_id",
}
클라이언트 → 서버
게임 초대 받기 invite_game {
  "game_room_id": 1,
  "receiver": "receiver_id"
}
서버 → 클라이언트 게임 초대를 받은 유저
미디어 준비 완료 media_ready 클라이언트 → 서버
미디어 준비 완료 media_ready 서버 → 클라이언트 게임방에 들어와 미디어 준비가 완료된 유저
피어 연결 offer 보내기 offer 클라이언트 → 서버
피어 연결 offer 받기 offer 서버 → 클라이언트 offer를 받은 유저 (나중에 입장한 유저)
피어 연결 answer 보내기 answer 클라이언트 → 서버
피어 연결 answer 받기 answer 서버 → 클라이언트 answer를 받은 유저  (먼저 입장한 유저)
피어 연결 icecandidate 보내기 icecandidate 클라이언트 → 서버
피어 연결 icecandidate 받기 icecandidate 서버 → 클라이언트 icecandidate를 받은 유저

📕 메인

👨🏻‍💻 팀 규칙

🛠 프로젝트 명세

👨‍🏫 멘토님 미팅

📝 회의록

1주차 회의록
2주차 회의록
3주차 회의록
4주차 회의록
5주차 회의록
6주차 회의록

📅 스프린트 계획

🔙 회고록

피어세션

2주차 피어세션
3주차 피어세션
4주차 피어세션
5주차 피어세션

💻 기술적 경험

Clone this wiki locally