본문 바로가기
프로그래밍/SPRING

[Spring boot] 간단 정리 REST API 버전 관리 방법(URI, Parameter, Header, mimetype )

by 애플 로그 2022. 5. 25.
반응형

 

[Spring boot] REST API 버전 관리 방법(URI, Request Parameter, Header, mimetype )

RestApi의 설계나 구조가 변경되거나, 기능이 변경되었을때 version이 변경될때 

사용자에게 어떤 버전을 제공하는지 알려줄 필요가 있다.

Rest Api 의 버전관리 방식 4가지에 대해 정리한다.

 

1) URI  방식 -  브라우저에서 실행 가능 ( twitter ) 

가장 단순한 형태이기도 하면서 이해하기 쉽기도 하다.

 @GetMapping(path="/v1/users/{id}")
 public MappingJacksonValue retrieveUser(@PathVariable int id) {
 ... 생략 ...
 }
 
 @GetMapping("/v2/users/{id}")
  public MappingJacksonValue retrieveUserV2(@PathVariable int id) {
 ... 생략 ...
 }

[호출 결과]

V1

V2

 

2) Parameter 방식 -  브라우저에서 실행 가능 ( amazon ) 

 @GetMapping(path="/v1/users/{id}", params="version=1")
 public MappingJacksonValue retrieveUser(@PathVariable int id) {
 ... 생략 ...
 }
 
 @GetMapping("/v2/users/{id}", params="version=2")
  public MappingJacksonValue retrieveUserV2(@PathVariable int id) {
 ... 생략 ...
 }

[호출결과]

version=1

version=2

3) Header 방식 - 브라우저 호출 X

 @GetMapping(path="/v1/users/{id}", headers ="X-API-VERSION=1")
 public MappingJacksonValue retrieveUser(@PathVariable int id) {
 ... 생략 ...
 }
 
 @GetMapping("/v2/users/{id}", headers ="X-API-VERSION=2")
  public MappingJacksonValue retrieveUserV2(@PathVariable int id) {
 ... 생략 ...
 }

[호출결과]

X-API-VERSION=1

X-API-VERSION=2

 

4) mime type 방식 - 브라우저 호출 X

 @GetMapping(path="/v1/users/{id}", produces ="application/vnd.company.appv1+json")
 public MappingJacksonValue retrieveUser(@PathVariable int id) {
 ... 생략 ...
 }
 
 @GetMapping("/v2/users/{id}", produces ="application/vnd.company.appv2+json")
  public MappingJacksonValue retrieveUserV2(@PathVariable int id) {
 ... 생략 ...
 }

[호출결과]

produces의 값에 위와 같이 넣어주고,

호출시에는 Headers의 Accept키값을 만들어 매칭 시켜주면 된다.

 

application/vnd.company.appv1+json

Accept값에 application/vnd.company.appv2+json 를 넣어주면 2번째 메서드 호출된다.

 

 

 

다른 볼거리

[프로그래밍/스프링] - 초간단 생성자 @AllArgsConstructor @RequiredArgsConstructor

 

초간단 생성자 @AllArgsConstructor @RequiredArgsConstructor

생성자 어노테이션 @AllArgsConstructor @RequiredArgsConstructor 1. @AllArgsConstructor - 자동으로 클래스 변수의 선언 순서대로 파라미터로 받는 생성자를 생성한다. import lombok.AllArgsConstructor; @All..

www.appletong.com

[프로그래밍/스프링] - @Size 어노테이션이 작동을 안할때

 

@Size 어노테이션이 작동을 안할때

@Size 어노테이션이 작동을 안할때 아래와 같이 코드를 잤다. import lombok.AllArgsConstructor; import lombok.Data; @Data @AllArgsConstructor public class User { @Size(min=2) private Integer id; private..

www.appletong.com

 

 

댓글