[REST API] REST API version 관리(1) - URL version 관리

민지·2024년 3월 14일
0

REST API - Spring Boot

목록 보기
17/27

versioning의 필요성


위의 사진처럼, 어떤 사용자는 name만 response해주는 REST API를 원할수도 있고, 어떤 사용자는 firstName과 lastName을 각각 response해주는 REST API를 원할수도 있다!

그렇다면, 해결책은 REST API를 Versioning하는 것이다!

다시 말해, name만 리턴해주는 api를 ver1, firstName과 lastName를 리턴해주는 api를 ver2라고 하고, 사용자가 원하는 버전을 선택해 사용하게끔 하는 것이다!

versioning 구현 방법

  • URL
  • Request Parameter
  • Header
  • Media Type

이 포스팅에는 URL 버전 관리를 구현하는 것부터 정리해보겠다!

URL version 관리 구현

어떤 URL 버전을 만들 것인가?

URL Versioning

restfulwebservices/versioning/VersioningPersonController.java 추가

@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코드와 PersonV2.java코드, Name.java코드

// 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/

profile
배운 내용을 바로바로 기록하자!

0개의 댓글