inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발

Version 관리 - URI를 이용한 버전관리

버전관리는 꼭 필요한건가요?

681

wcsjinn

작성한 질문수 34

0

제가 지금 포폴용으로 프로젝트를 하고있는데 배포 후 업데이트를 하지 않을 생각이어도 버전관리가 꼭 필요한가요?

그리고 버전이라는 것은 업데이트 되는 것을 말한다고 생각했는데, 왜 같은 controller안에 v1과 v2 두 가지 버전이 존재하는지 그리고 왜 도메인의 entitiy가 다른지 것인지 이해가안됩니다.

spring-boot rest-api

답변 1

6

Dowon Lee

안녕하세요, 이도원입니다. 

RESTful API를 설계하실 때에는 반드시라고 해도 좋을 만큼 RESTful API Maturity Model(https://restfulapi.net/richardson-maturity-model/)에 대해서 읽어보시고, 학습하신 다음에 개발해 보시기를 권장합니다. 단순하게 API를 선언하는 것 뿐만아니라, 리소스의 목적과 연계된 작업에 대해서도 RESTful API 설계에 포함할 수 있습니다. 

버전 관리는 말씀하신 것처럼 애플리케이션의 업데이트에서도 필요하지만, 리소스를 제공하려는 API에서도 필요합니다. 예를 들어, 사용자 목록 가져오기라는 API를 /users 라고 선언하여 사용중이라고 가정해 봅시다. 어떤 시점에 비즈니스 로직의 변경에 따라 사용자의 birthday도 포함하여 전달하기로 결정하고 API의 업데이트가 필요하였다고 가정하면, 이전 버전의 API 및 새로운 버전의 API를 같이 제공하는 것이 고객에게 오류를 덜 발생하면서 새로운 기능을 제공할 수 있는 방법이 될 수 있을 것입니다. 따라서, API를 설계할 때는 /v1/users, /v2/users와 같이 버전에 대한 소개와 어떤 기능이 업데이트 되었는지를 같이 가이드 해주는 것이 좋을 것입니다. 카카오 API나 구글 API를 사용해 보신 적이 있다면, API Documentation을 반드시 확인해 보셨을텐데, 해당 문서에서는 먼저 사용하시려는 버전을 확인하고 나서, 사용 방법을 확인해 보셔야 합니다. 이렇듯인 버전 관리는 애플리케이션의 소스 코드 뿐만 아니라, 제공하려는 서비스의 리소스에 대해서도 관리해 주는 것이 좋습니다. 

감사합니다.  

JPA

0

71

1

jpa dependency를 추가하고 SecurityConfig클래스에서 오류가 납니다.

0

84

1

웹 브라우저 400 bad request

0

84

1

@Size는 되는데 @Past는 안 됩니다.

0

76

1

pdf 자료는 없나요?

0

91

2

locale 정보가 null 이면 무조건 messages_ko.properties이 호출 되는 문제

0

99

2

Swagger 강의, Unable to infer base url 이거 뜨시는 분들 도움되시라고

0

133

1

강의에서나온 화면 피피티

0

169

1

HelloWorldBean 관련 에러

0

194

2

Swagger API 3.x 오류..

0

230

1

java: variable message not initialized in the default constructor 에러는 어찌하면 좋을까요?

1

288

1

현재 GIT에 올리신 소스를 실행해봤습니다.

0

203

2

고양이 소리가 귀엽네요 !!

0

149

2

git에서 소스받고 실습중인데

0

127

1

post가 안되요

0

115

1

한국어 같은 경우 언어코드인 messages_ko.properties 로 생성하는게 더 좋지 않나요?

0

176

2

리턴타입으로서 EntityModel<User> 와 ResponseEntity질문

0

112

1

예외처리쪽 관련 질문있습니다.

0

165

2

엔티티가 바로 응답으로 나가도 되나요??

0

239

2

안녕하세여 Cannot invoke "co.kr.joneconsulting.resfulservice.repository.PostRepository.save(Object)" because "this.postRepository" is null

0

150

2

사용자 등록하고 나서 H2 에서 보면 신규 사용자의 password, ssn 이 null 로 되어 있습니다.

0

146

2

ApplictionContext 질문

0

199

2

롬북이 안먹히는것같아요

0

161

1

인텔리제이에서스프링부트 파일 실행하면

0

244

1