API Versioning

HeumHeum2·2021년 7월 22일
1
post-thumbnail

운영을 하면서 서버의 API가 수정되거나 추가는 불가피하게 일어난다. 그때마다 클라이언트의 버전을 업데이트하라고 강제성을 띄우면 유저경험이 좋지 않다. 하위호환성 체크를 위해 API도 버전 관리가 필요하다.

전략

API Versioning 전략에는 여러 방법이 있다.

URI Versioning

// v1
GET /v1/users
Host: api.test.com

// v2
GET /v2/users
Host: api.test.com
  • 요청하는 같은 주소의 uri만 변경해서 사용하는 전략
  • 버전 번호가 노출됨
  • API가 수정됨에 따라 버전 정보가 계속 올라갈 수 있기에 다양한 버전을 지원해야함.

Domain Versioning

// v1
GET /users
Host: api.test.com

// v2
GET /users
Host: api2.test.com
  • 다른 주소로 변경해서 사용하는 전략
  • 비용이 많이 들어서 사용하진 않을 것 같다.

Parameter Versioning

// v1
GET /users?version=1
Host: api.test.com

// v2
GET /users?version=2
Host: api.test.com
  • parameter에 version을 담아 요청하는 전략
  • 구형 웹 브라우저와 웹 프록시에는 캐싱이 지원되지 않음.

Custom Headers Versioning

// v1
GET /users
Host: api.test.com
Version: 1

// v2
GET /users
Host: api.test.com
Version: 2
  • 클라언트가 header에 version을 추가하여 요청하는 전략

Accept Header Versioning

// v1
GET /users
Host: api.test.com
Accept: application/vnd.test.v1+json

// v2
GET /uesrs
Host: api.test.com
Accept: application/vnd.test.v2+json
  • header 안의 Accept에 version을 담아 요청하는 전략
  • Accept는 복수의 형식을 지정할 수 있음.
  • 웹 서버는 Content-Type 헤더를 사용하여 응답 본문에 있는 데이터의 형식을 확인할 수 있음.

완벽한 정답은 없다. 전략 중 내 상황과 가장 알맞는 전략을 선택하는게 정답이다.

profile
커피가 본체인 개발자 ☕️

0개의 댓글