주말에 스타크래프트, 와우, 오버워치로 유명한 블리자드에서 Battle.net API를 제공하는것을 알았다.
OAuth2 API로 구성되어있고, 다름 데이터가 많아서,
랭킹 리스트와 프로필등을 한눈에 볼수있는 서비스를 하나 만들면 어떨까?하고 API의 연동을 시도해봤다...
그런데!!!
글로벌기업, 그리고 한떼는 모든 게이머들에게 선망의 대상이었던,
갓 블리자드가 API를 이렇게 만드는게 현실인가??? 라는 생각이 들기 시작했다.
우선 API는 문서가 없다.
문서라고는 api url들과 필요한 요청파라미터만 기술되어있다.
해당 API의 응답 필드가 문서로 정리되어 제공하고 있지않아서, 직접 API를 호출해보고, 응답값을 보고, 유추하여 사용해야한다 ㅠㅠ
(하... 내가 알던 블리자드 맞나???)
https://community.developer.battle.net/documentation/starcraft-2/community-apis
(여기 API문서 페이지 인데..한번 보시라..)
그리고 더 충격적인것...
API의 응답필드의 코드컨벤션이 모두 다르다..
ladderId -> 카멜케이스
memberCount -> 카멜케이스
access_token -> snake케이스
token_type -> snake케이스
필드마다, 카멜케이스, 스네이크케이스가 혼재되어있다..
한참을 jackson json변환이 에러가 나서, 봤더니...
필드마다 다틀려...ㅠㅠ
결국, 필드, DTO별로 @JsonProperty, @JsonNaming을 이용해 한땀한땀 필드마다 설정을 하여, 변환을 해야했다.ㅠ
그리고 경기전적데이터 같은 경우는 지속적으로 시간이 지남에 따라 쌓이는 데이터기때문에, 페이징이 필수로 있어야한다.
한번에 전체데이터를 응답받는것은 네트워크 비용이나, 사용자의 응답속도에 영향을 미치기 때문이다..
하지만, 그런것 따위 없다.
그냥 전체 데이터.... (2015년인가?? 스타2 발매된게.. 그때 부터 했던사람은 2015년부터 전적이 응답으로 모두 내려간다...이거 응답데이터(전적데이터)만 10메가는 될듯...ㅠ)
당연히, 필터조건도 없다..
페이징조차없는데 필터조건이라고 있을까?
그나마 제공하는 API는 클라이언트가 사용을 하라고 만든건지, 그냥 구색맞추기로 하라고 해서, 그냥 만든건지를 모를정도로,
클라이언트의 요구가 반영이 되어있지않는게 대부분이다...
(차라리 만들지를 마라!! 이놈들아)
요즘 API를 많이 만들고 있는데, 매번은 아니라도,
마음가짐은 클라이언트(프론트개발)에서 좀더 편하게, 또는 복잡도가 없게 API를 제공한다는 마음가짐으로 만들고 있는데,
저런것들을 보면, 참 한심스럽다..
최대한 API는 컨벤션이 통일되어야하고, 해당 API를 실제로 사용하는 클라이언트들이 실제로 사용가능하고 유용한 구조로 응답이 내려가도록 API를 구성해야한다는걸 명심해야 한다.
경우에 따라서 클라이언트에서의 복잡도를 낮추기 위해서,
서버단에서의 어그리게이션이나 트랜스폼작업을 추가로 해주는 인지상정도 갖춰야한다.
(너무 빡빡하게 이건 너의 영역, 이건 내가 해줄것!! 따지지 말자)
울며겨자먹기로...써야하나...ㅋㅋ
'MY개발생각' 카테고리의 다른 글
| [개발생각] AI시대에 프로그래머로 사는법? (0) | 2026.06.14 |
|---|---|
| [개발생각] JPA에서 soft delete 관리하기 (0) | 2026.06.07 |
| [개발생각] 시스템의 정리 - 코드 컨벤션과 분류 (0) | 2026.06.02 |
| [개발생각] 리더의 역할이 구성원에 대한 기대와 어떤 관계가 있을까? (0) | 2026.05.31 |
| [개발생각] ActiveMq에서 Topic을 Queue방식으로 컨슘하기 (0) | 2026.05.29 |
