사용자는 request parameter를 통해 원하는 버전을 선택할 수 있다는 뜻!
1. 뭘 만들건지 구조화
Request Param Versioning
2. versioning/VersioningPersonController.java 수정
// http://localhost:8080/person?version=1
@GetMapping(path = "/person", params = "version=1")
public PersonV1 getFirstVersionOfPersonRequestParameter() {
return new PersonV1("Bob Charlie");
}
@GetMapping(path = "/person", params = "version=2")
public PersonV2 getSecondVersionOfPersonRequestParameter() {
return new PersonV2(new Name("Bob", "Charlie"));
}
@GetMapping에 params="version=1"을 추가해, 해당 version=1과 같은 request parameter가 있는 경우에만, 이 특정 메서드를 적용할 것!
실행결과,
사용자 정의 헤더 버전 관리
API 소비자가 API 버전 1을 원하는 경우, Request 헤더인 X-API-VERSION=1을 전송할 수 있다.
API 소비자가 API 버전 2을 원하는 경우, Request 헤더인 X-API-VERSION=2을 전송할 수 있다.
1. 뭘 만들건지 구조화
Header Versioning
2. versioning/VersioningPersonController.java 수정
@GetMapping(path = "/person/header", headers = "X-API-VERSION=1")
public PersonV1 getFirstVersionOfPersonRequestHeader() {
return new PersonV1("Bob Charlie");
}
@GetMapping(path = "/person/header", headers = "X-API-VERSION=2")
public PersonV2 getSecondVersionOfPersonRequestHeader() {
return new PersonV2(new Name("Bob", "Charlie"));
}
실행결과,
참고로, 헤더 이름을 꼭 X-API-VERSION으로 안해도 되고, 맘대로 바꿔도 됨!
소비자가 API의 v1에 엑세스하는 경우, application/vnd.company.app-v1+json을 Accept 헤더값으로 입력하고,
소비자가 API의 v2에 엑세스하는 경우, application/vnd.company.app-v2+json을 Accept 헤더값으로 입력하면 된다.
1. 뭘 만들건지 구조화
2. versioning/VersioningPersonController.java 수정
@GetMapping(path = "/person/accept", produces = "application/vnd.company.app-v1+json")
public PersonV1 getFirstVersionOfPersonAcceptHeader() {
return new PersonV1("Bob Charlie");
}
@GetMapping(path = "/person/accept", produces = "application/vnd.company.app-v2+json")
public PersonV2 getSecondVersionOfPersonAcceptHeader() {
return new PersonV2(new Name("Bob", "Charlie"));
}
v1 실행결과,
하지만, 이 방법은 Accept 헤더 값이 정해져있어서, 바꾸면 에러가 났다 ..
참고 및 출처
이 시리즈는 Udemy 강의의 내용을 정리한 것입니다.
https://www.udemy.com/course/spring-boot-and-spring-framework-korean/