위의 사진처럼, 어떤 사용자는 name만 response해주는 REST API를 원할수도 있고, 어떤 사용자는 firstName과 lastName을 각각 response해주는 REST API를 원할수도 있다!
그렇다면, 해결책은 REST API를 Versioning하는 것이다!
다시 말해, name만 리턴해주는 api를 ver1, firstName과 lastName를 리턴해주는 api를 ver2라고 하고, 사용자가 원하는 버전을 선택해 사용하게끔 하는 것이다!
이 포스팅에는 URL 버전 관리를 구현하는 것부터 정리해보겠다!
URL Versioning
@RestController
public class VersioningPersonController {
@GetMapping("/v1/person")
public PersonV1 getFirstVersionOfPerson() {
return new PersonV1("Bob Charlie");
}
@GetMapping("/v2/person")
public PersonV2 getSecondVersionOfPerson() {
return new PersonV2(new Name("Bob", "Charlie"));
}
}
// PersonV1.java
public class PersonV1 {
private String name;
public PersonV1(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "PersonV1 [name=" + name + "]";
}
}
// PersonV2.java
public class PersonV2 {
private Name name;
public PersonV2(Name name) {
super();
this.name = name;
}
public Name getName() {
return name;
}
@Override
public String toString() {
return "PersonV2 [name=" + name + "]";
}
}
// Name.java
public class Name {
private String firstName;
private String lastName;
public Name(String firstName, String lastName) {
super();
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
@Override
public String toString() {
return "Name [firstName=" + firstName + ", lastName=" + lastName + "]";
}
}
URL versioning 실행결과,
따라서, 사용자가 원하는 특정 버전에 따라, 올바른 URL을 열어서, API의 특정 버전을 사용할 수 있었다.
다음 포스팅에서는 다른 versioning 방법 3가지를 모두 정리해보겠다.
참고 및 출처
이 시리즈는 Udemy 강의의 내용을 정리한 것입니다.
https://www.udemy.com/course/spring-boot-and-spring-framework-korean/