forked from codesquad-members-2021/baseball
-
Notifications
You must be signed in to change notification settings - Fork 1
API 요구사항
dahun-lee-daji edited this page May 10, 2021
·
23 revisions
백엔드에게 필요한 API 를 요청하기 위해, 요구사항을 정리하는 문서
자신이 어떤 HTTP 요청으로, 어떤 응답을 받고 싶은지 적어주시면 그대로 만들어 드립니다!
조회(GET), 추가(POST), 수정(PUT), 삭제(DELETE)
http://baseball.pyro-squad.com/
참가할 수 있는 게임 목록 조회
[
{
"home" : "Captain",
"away" : "Marble",
"id" : "U924AX"
},
{
"home" : "Honux",
"away" : "Crong",
"id" : "H132UY"
},
{
"home" : "Android",
"away" : "Apple",
"id" : "M887UW"
}
]
class Match {
var home: String //홈 팀
var away: String //원정 팀
var id: String // 이 때 Id는 유일해야 한다.
}
{
"scores" : {
"awayName": "Pyro"
"awayScore": 3
"homeName": "Robin"
"homeScore": 7
},
"strike" : 2,
"ball": 3,
"outCount": 1,
"bases": [true, true, false], // 1 2 3 루 주자 유무
"inningInfo": {
"inningCount" : 3
"isUserTop" : true
"isUserOffense" : false
},
"pitcher": {
"name" : "김광현",
"numberOfPitching" : "6",
"hit" : "1",
"baseOnBalls" : "0",
"innings" : "2.3",
},
"batter": {
"name" : "류현진",
"plateAppearances" : "2",
"hit" : "1",
"out" : "1",
"average" : "0.500",
},
"pitcherInfo": [true,false,false,true,false]
}
class MatchInfo {
var scores: ScoreInfo
var strike: Int
var ball: Int
var outCount: Int
var bases: [Bool] // 1 2 3 루 주자 유무
var inningInfo: InningInfo
var pitcher: Pitcher
var batter: Batter
var pitcherInfo: [Bool] // [false, false, true] = ["ball","ball","strike"]
}
struct InningInfo {
let inningCount : int
let isUserTop : Bool
let isUserOffense: Bool
}
{
"scores" : {
"awayName": "Pyro"
"awayScore": 3
"homeName": "Robin"
"homeScore": 7
},
"innings" : {
"away": [1,1,1]
"home": [1,1]
},
"awayPlayers" : {
"pitchers" : [{
"name" : "김광현",
"numberOfPitching" : "6",
"hit" : "1",
"baseOnBalls" : "0",
"innings" : "2.6",
}, ... ],
"batters" : [{
"name" : "류현진",
"plateAppearances" : "2",
"hit" : "1",
"out" : "1",
"average" : "0.500",
}, ...]
},
"homePlayers" : {
"pitchers" : [{
"name" : "김광현",
"numberOfPitching" : "6",
"hit" : "1",
"baseOnBalls" : "0",
"innings" : "3.0",
}, ... ],
"batters" : [{
"name" : "류현진",
"plateAppearances" : "2",
"hit" : "1",
"out" : "1",
"average" : "0.500",
}, ...]
}
}
class GameInfo {
var scores: ScoreInfo
var innings: Innings
var awayPlayers: Players
var homePlayers: Players
}
class Players {
var pitchers : [Pitcher]
var batters : [Batters]
}
class Batter {
var name: String
var plateAppearances: Int // 타석
var hit: Int // 안타
var out: Int // 아웃
var average: float // 평균
}
class Pitcher {
var name: String
var numberOfPitching :Int
var hit : Int //피안타
var baseOnBalls : Int // 볼넷
var innings : Float //공을 던진 이닝 수
}
class ScoreInfo {
var awayName: String
var awayScore: Int
var homeName: String
var homeScore: Int
}
class Innings {
var home: [Int]
var away: [Int]
}
게임 입장 요청
{ Id: "GJ873D", // 예시 Match의 Id
selectedTeam: "Captain" //모든 팀의 이름은 유니크하다.
}
200 : 참여 가능 400 : 타 플레이어가 선점함.
게임 시작 : home 선택 시 수비부터.
서버에서 Strike, Ball, 안타 3가지 중에 하나가 랜덤으로 발생할 수 있도록 해야한다.
class ProgressResult {
result: "strike" | "ball" | "hit" | "random";
}
class MatchInfo {
var scores: ScoreInfo
var strike: Int
var ball: Int
var outCount: Int
var bases: [Bool] // 1 2 3 루 주자 유무
var inningInfo: String // "2회초 수비"
var pitcher: Player
var batter: Player
var pitcherInfo: [String] // ["ball","ball","strike"]
}