본문 바로가기

프로젝트

기존 API 응답 형식 변경할 때 주의점

기존 API 대체 문제

사이드 프로젝트를 하면서 기존 API의 응답 구조가 변경이 되는 상황이 발생했다. API의 경로를 유지하기 위해 기존 API를 변경하는 방향으로 작업이 진행이 되었다. 작업을 완료하고 배포를 하고 나니 응답 값의 구조 변경으로 API와 관련된 앱의 기능들이 동작하지 않게 되었다.

API 대체 방안

사이드 프로젝트를 같이하는 선배 개발자 분이 기존 API의 변경으로 운영 환경에 영향을 줄 수 있다면 새로운 API를 만들어야 한다고 조언을 해주었다. 함께 일하는 백엔드 분들과 논의를 해서 API에 버전을 붙이기로 이야기를 했다.

 

기존 API
@GetMapping(value="/hero")
public HeroResponse getHero(){}

추가 API
@GetMapping(value="/v2/hero")
public HeroResponse getHero(){}

 

그리고 이후에 같이 작업하는 사람들도 알 수 있도록 기존 API에는 Deprecated 어노테이션을 붙여 명시하기로 했다. 이후에 프론트에서 해당 기능들이 신규 API로 모두 변경이 되며, 기존 API는 삭제를 하기로 했다.

 

기존 API
@Deprecated
@GetMapping(value="/hero")
public HeroResponse getHero(){}

이후에 같은 실수

백엔드 분들과 논의를 하고 정했음에도 불구하고, 주인공에 대한 권한 수정하는 API를 수정하면서 무의식적으로 응답 구조가 변경을 해버렸다. 이번에는 프론트에서 변경된 API에 맞게 구조를 변경하기로 하면서 일단락이 되었다. 하지만, 이런 실수를 반복한다면 운영 환경에 계속적인 장애를 안겨줄 것이기에 치명적이라고 할 수 있다. 계속적으로 주의를 기울이면서 습관적으로 기존 API 수정할 때 운영 환경에 영향을 주지 않도록 작업할 수 있게 해야겠다.