개요

API에 v1, v2와 같이 버전을 명시한 것을 본 것은 백엔드 공부를 하며 다른 웹사이트의 API를 관찰할 때였다.
왜 이렇게 버전을 나누어서 사용할까 궁금했다.

이를 API Versioning이라고 한다.

필요성

REST API 그 자체로는 서버와 클라이언트가 독립적으로 진화하기 위한 발상에서 나온 개념이다. 따라서 서버에서 단순한 데이터만을 만들어주는 식으로 서비스한다.

만약 우리가 Open API를 구성했다고 해보자. 이 API는 이미 사용자들에게 공개되어 우리의 API가 새로운 웹 서비스의 일부가 되어있을 수도 있다.
이러한 상황에서 API의 스펙을 업그레이드 시키는 등 변경이 일어나면 줄줄이 에러가 생길 것이다. 우리의 API를 사용하여 잘만 서비스되던 것이 예고도 없이 먹통이 되는 상황이 발생하는 것이다.

만약 카카오 API라고 해보면 충분한 안내와 유예기간 없이 변경이 일어날 경우 이를 사용하고 있는 수많은 서비스에 영향을 주어서 그 파급효과는 엄청나게 클것이다.

이러한 이유로 API의 버전을 나누어서 기존에 공개된 경로는 유지하고 업그레이드 된 API스펙을 공개하는 방식으로 사용할 수 있다.

버저닝 방법

  1. URL 버전관리 : 버전에 대한 정보가 API 엔드포인트에 포함되는 방식이다. 예를 들면 http://example.com/v1/checkLogin과 같다.
  2. 쿼리 매개변수 버전관리: API요청을 보내는 url은 동일하고 뒤에 ?vesrion=v1과 같이 사용하는 방식이다.
  3. 헤더 버전관리 : http의 헤더에 버전 정보를 명시하는 방법이다.