기획이 거의 다 나와서 API 설계를 해보려 한다.
24.05.18 API 2차 수정
https://boardpick-server.store
GET /api/boardgames/search?query=Catan HTTP/1.1
Host: example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5c.../api/boardgames/search?keyword=셀레스티아/api/board/games/search?keyword=셀레스티아&page=1&size=5[
{
"id": 1,
"thumbnailUrl": "https://cf.geekdo-images.com/8kl6m6m_unthBPw9SxoDQQ__thumb/img/vK6rBE3ZjolzG6jEVxJj49MBIc4=/fit-in/200x150/filters:strip_icc()/pic6973677.png",
"imageUrl": "https://cf.geekdo-images.com/8kl6m6m_unthBPw9SxoDQQ__original/img/FtecAcFxPelZCfbWhZlo85uF2Rg=/0x0/filters:format(png)/pic6973677.png",
"name": "셀레스티아1",
"description": "예시용 설명",
"rating": 0,
"ratingCount": 0,
"minPlayers": 2,
"maxPlayers": 6,
"playtime": 30,
"ageLimit": 8,
"difficulty": 3,
"rule": "gg",
"extraVideo": "temp",
"likes": 1,
"picked": false,
"boardGameCategories": [
{
"id": 1
},
{
"id": 2
}
],
"userBoardGames": [
{
"id": 7,
"date": "2024-05-18T02:23:46.608+00:00"
}
],
"tags": []
},
{
"id": 10,
"thumbnailUrl": "https://cf.geekdo-images.com/8kl6m6m_unthBPw9SxoDQQ__thumb/img/vK6rBE3ZjolzG6jEVxJj49MBIc4=/fit-in/200x150/filters:strip_icc()/pic6973677.png",
"imageUrl": "https://cf.geekdo-images.com/8kl6m6m_unthBPw9SxoDQQ__original/img/FtecAcFxPelZCfbWhZlo85uF2Rg=/0x0/filters:format(png)/pic6973677.png",
"name": "셀레스티아10",
"description": "예시용 설명",
"rating": 0,
"ratingCount": 0,
"minPlayers": 2,
"maxPlayers": 6,
"playtime": 30,
"ageLimit": 8,
"difficulty": 3,
"rule": "gg",
"extraVideo": "temp",
"likes": 0,
"picked": false,
"boardGameCategories": [
{
"id": 19
},
{
"id": 20
}
],
"userBoardGames": [],
"tags": []
}
]
/api/boardgames?category=롤플레잉[
{
"id": 3,
"thumbnailUrl": "https://cf.geekdo-images.com/8kl6m6m_unthBPw9SxoDQQ__thumb/img/vK6rBE3ZjolzG6jEVxJj49MBIc4=/fit-in/200x150/filters:strip_icc()/pic6973677.png",
"imageUrl": "https://cf.geekdo-images.com/8kl6m6m_unthBPw9SxoDQQ__original/img/FtecAcFxPelZCfbWhZlo85uF2Rg=/0x0/filters:format(png)/pic6973677.png",
"name": "셀레스티아3",
"description": "예시용 설명",
"rating": 0,
"ratingCount": 0,
"minPlayers": 0,
"maxPlayers": 0,
"playtime": 0,
"ageLimit": 0,
"difficulty": 0,
"rule": null,
"extraVideo": null,
"likes": 0,
"picked": true,
"boardGameCategories": null,
"userBoardGames": null,
"tags": []
},
{
"id": 4,
"thumbnailUrl": "https://cf.geekdo-images.com/8kl6m6m_unthBPw9SxoDQQ__thumb/img/vK6rBE3ZjolzG6jEVxJj49MBIc4=/fit-in/200x150/filters:strip_icc()/pic6973677.png",
"imageUrl": "https://cf.geekdo-images.com/8kl6m6m_unthBPw9SxoDQQ__original/img/FtecAcFxPelZCfbWhZlo85uF2Rg=/0x0/filters:format(png)/pic6973677.png",
"name": "셀레스티아4",
"description": "예시용 설명",
"rating": 0,
"ratingCount": 0,
"minPlayers": 0,
"maxPlayers": 0,
"playtime": 0,
"ageLimit": 0,
"difficulty": 0,
"rule": null,
"extraVideo": null,
"likes": 0,
"picked": true,
"boardGameCategories": null,
"userBoardGames": null,
"tags": []
}
]
/api/boardgames/1{
"id": 1,
"thumbnailUrl": "https://cf.geekdo-images.com/8kl6m6m_unthBPw9SxoDQQ__thumb/img/vK6rBE3ZjolzG6jEVxJj49MBIc4=/fit-in/200x150/filters:strip_icc()/pic6973677.png",
"imageUrl": "https://cf.geekdo-images.com/8kl6m6m_unthBPw9SxoDQQ__original/img/FtecAcFxPelZCfbWhZlo85uF2Rg=/0x0/filters:format(png)/pic6973677.png",
"name": "셀레스티아1",
"description": "예시용 설명",
"rating": 0,
"ratingCount": 0,
"minPlayers": 2,
"maxPlayers": 6,
"playtime": 30,
"ageLimit": 8,
"difficulty": 3,
"rule": "gg",
"extraVideo": "temp",
"likes": 1,
"picked": false,
"boardGameCategories": [
{
"id": 1
},
{
"id": 2
}
],
"userBoardGames": [
{
"id": 7,
"date": "2024-05-18T02:23:46.608+00:00"
}
],
"tags": []
}
/api/boardgames/today-pick{
"id": 1,
"thumbnailUrl": "https://cf.geekdo-images.com/8kl6m6m_unthBPw9SxoDQQ__thumb/img/vK6rBE3ZjolzG6jEVxJj49MBIc4=/fit-in/200x150/filters:strip_icc()/pic6973677.png",
"imageUrl": "https://cf.geekdo-images.com/8kl6m6m_unthBPw9SxoDQQ__original/img/FtecAcFxPelZCfbWhZlo85uF2Rg=/0x0/filters:format(png)/pic6973677.png",
"name": "셀레스티아1",
"description": "예시용 설명",
"rating": 0,
"ratingCount": 0,
"picked": true,
"tags": []
}
/api/boardgames/recs/api/boardgames/recs[
{
"id": 17,
"thumbnailUrl": "https://cf.geekdo-images.com/0xqF_KyOb7V26Lu5YT3fxw__thumb/img/ABTwzzMGekkz2jVl01LC4789TcQ=/fit-in/200x150/filters:strip_icc()/pic6699821.jpg",
"imageUrl": "https://cf.geekdo-images.com/0xqF_KyOb7V26Lu5YT3fxw__original/img/uqxMcj1QPt-U34drYdL6mmv2eos=/0x0/filters:format(jpeg)/pic6699821.jpg",
"name": "어스",
"description": "상품을 배송하고 건물을 짓고, 다른 사람들보다 당신에게 더 도움이 되는 역할을 선택하세요",
"rating": 484.0,
"ratingCount": 0,
"minPlayers": 1,
"maxPlayers": 5,
"playtime": 60,
"ageLimit": 13,
"difficulty": "중수",
"rule": "https://www.youtube.com/embed/EKQb3MX1el8",
"extraVideo": "https://www.youtube.com/embed/OOEdQUktDao",
"likes": 0,
"picked": false,
"boardGameCategories": [
"카드게임",
"전략게임"
],
"userBoardGames": [],
"tags": [
"자원 승점",
"타일 놓기",
"환경"
]
},
// 다른 보드게임들...
]
/api/pick/1{
"picked": true
}
/api/pick[
{
"id": 1,
"thumbnailUrl": "https://cf.geekdo-images.com/8kl6m6m_unthBPw9SxoDQQ__thumb/img/vK6rBE3ZjolzG6jEVxJj49MBIc4=/fit-in/200x150/filters:strip_icc()/pic6973677.png",
"imageUrl": "https://cf.geekdo-images.com/8kl6m6m_unthBPw9SxoDQQ__original/img/FtecAcFxPelZCfbWhZlo85uF2Rg=/0x0/filters:format(png)/pic6973677.png",
"name": "셀레스티아1",
"description": "예시용 설명",
"rating": 0,
"ratingCount": 0,
"minPlayers": 0,
"maxPlayers": 0,
"playtime": 0,
"ageLimit": 0,
"difficulty": 0,
"rule": null,
"extraVideo": null,
"likes": 0,
"picked": true,
"boardGameCategories": null,
"userBoardGames": null,
"tags": []
}
]
/api/user{
"id": 2, // 사용자 DB 식별 번호
"code": "kakao_3477934666", // 사용자 식별 코드
"profileImage": "http://k.kakaocdn.net/dn/blt0qi/btsF5E32BWI/dDmvFXnJlFJ0UnedbTilYK/img_640x640.jpg",
"nickname": "안준성",
"role": "USER", // 사용자 권한
"userBoardGames": [] // 사용자가 pick한 보드게임들
}
/api/boardgames/list?filter=api/boardgames/list?filter=difficultyapi/boardgames/list?filter=playersapi/boardgames/list?filter=duo[
{
"id": 5,
"thumbnailUrl": "https://cf.geekdo-images.com/wKwRk0wYBcrtLAfgn4PCdg__thumb/img/mJNzYNKvYWDlaaD12V32BJ453d0=/fit-in/200x150/filters:strip_icc()/pic6624445.png",
"imageUrl": "https://cf.geekdo-images.com/wKwRk0wYBcrtLAfgn4PCdg__original/img/Wpp0vzsVe4HxXGUqiZ1hDvwAHZU=/0x0/filters:format(png)/pic6624445.png",
"name": "투 매니 본즈",
"description": "마지막 보스 대결로 가는 길에 서사시적인 모험에서 독특한 주사위를 투수하세요",
"rating": 227, // 현재 안 쓰는 정보
"ratingCount": 0, // 현재 안 쓰는 정보
"minPlayers": 1,
"maxPlayers": 4,
"playtime": 75,
"ageLimit": 12,
"difficulty": "고수",
"rule": "유튜브 링크",
"extraVideo": "유튜브 링크",
"likes": 0, // pick 횟수
"picked": false, // 현재 사용자가 해당 보드게임의 pick 여부
"boardGameCategories": [
"롤플레잉",
"협력게임"
],
"userBoardGames": [], // 아직은 필요 없는 정보
"tags": [
"모험",
"판타지",
"주사위"
]
},
// ... 다른 보드게임들
]
/api/boardgames/similar/{boardGameId}api/boardgames/similar/1[
{
"id": 9,
"thumbnailUrl": "https://cf.geekdo-images.com/sZYp_3BTDGjh2unaZfZmuA__thumb/img/veqFeP4d_3zNhFc3GNBkV95rBEQ=/fit-in/200x150/filters:strip_icc()/pic2437871.jpg",
"imageUrl": "https://cf.geekdo-images.com/sZYp_3BTDGjh2unaZfZmuA__original/img/7d-lj5Gd1e8PFnD97LYFah2c45M=/0x0/filters:format(jpeg)/pic2437871.jpg",
"name": "글룸헤이븐",
"description": "전략적 카드 플레이로 괴물을 정복하세요. 당신의 유산을 남기기 위한 당신의 탐구를 완수하세요",
"rating": 1,
"ratingCount": 0,
"minPlayers": 1,
"maxPlayers": 4,
"playtime": 90,
"ageLimit": 14,
"difficulty": "고수",
"rule": "https://www.youtube.com/embed/Wck7YRZ77Xk",
"extraVideo": "https://www.youtube.com/embed/Si3XQuYNj-A",
"likes": 0,
"picked": false,
"boardGameCategories": [
"전략게임",
"협력게임"
],
"userBoardGames": [],
"tags": [
"모험",
"탐험",
"판타지"
]
},
// ... 다른 보드게임들
]
/api/boardgames/suggestion/api/boardgames/suggestion[
{
"id": 59,
"thumbnailUrl": "https://cf.geekdo-images.com/YEUOppe56fm-B-77407a2Q__thumb/img/L9zvscdhFlsUAJslmteB3JMHmKg=/fit-in/200x150/filters:strip_icc()/pic792277.jpg",
"imageUrl": "https://cf.geekdo-images.com/YEUOppe56fm-B-77407a2Q__original/img/aIXlMR7X5mGAdI06LV7n33ZLThU=/0x0/filters:format(jpeg)/pic792277.jpg",
"name": "서바이브!",
"description": "이 2010년 판은 1982년 원작 'Survive!'의 재판이 아닌 추가적인 조각과 룰을 통해 'Survive!'와 'Waddington's Escape from Atlantis'를 플레이할 수 있도록 한 판이며, 이에 더불어 'Survive: Escape from Atlantis! - Dolphins , Dive Dice Mini Expansion'이 포함되어 있습니다.",
"rating": 866.0,
"ratingCount": 0,
"minPlayers": 2,
"maxPlayers": 4,
"playtime": 50,
"ageLimit": 8,
"difficulty": "왕초보",
"rule": "https://www.youtube.com/embed/EiGxIvPcmtc",
"extraVideo": "https://www.youtube.com/embed/null",
"likes": 2,
"picked": false,
"boardGameCategories": [
"기억력",
"배팅게임"
],
"userBoardGames": [
{
"id": 104,
"date": "2024-05-23T05:30:11.783+00:00"
},
{
"id": 372,
"date": "2024-05-26T17:49:16.531+00:00"
}
],
"tags": [
"전략",
"블러핑",
"기억력"
]
},
// ... 다른 보드게임들
]