반응형
[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
[프로그래밍/스프링] - @Size 어노테이션이 작동을 안할때
'프로그래밍 > SPRING' 카테고리의 다른 글
swagger3.0 404 not found (0) | 2022.05.30 |
---|---|
swagger3.0 에러 발생 Failed to start bean 'documentationPluginsBootstrapper' (0) | 2022.05.30 |
Spring boot - Failed to determine a suitable driver class (0) | 2022.05.20 |
@Size 어노테이션이 작동을 안할때 (0) | 2022.05.20 |
Spring @PathVariable 어노테이션 쉽게 정리 (0) | 2022.05.19 |
댓글