RESTful
Rest API version 관리(URI)
당근개발자
2022. 1. 16. 17:40
API를 서비스를 하다보면, 시간이 지나면서 각 버전들이 나온다.
그 버전들을 관리하는 방법을 알아보자.
새로운 User 객체 생성
@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonFilter("UserInfoV2")
// User class에 @NoArgsConstructor 추가
public class UserV2 extends User{
private String grade;
}
기존 user를 상속받고, grade 필드를 추가한다.
@GetMapping("/v2/users/{id}")
public MappingJacksonValue retrieveUserV2(@PathVariable int id) {
User user = service.findOne(id);
if (user == null) {
throw new UserNotFoundException(String.format("ID[%s] not found",id));
}
// User -> User2
UserV2 userV2 = new UserV2();
// userV2에 user 복사
BeanUtils.copyProperties(user, userV2); //id ,name ,pwd,joinDate,ssn,
userV2.setGrade("VIP");
//변경
SimpleBeanPropertyFilter filter = SimpleBeanPropertyFilter
.filterOutAllExcept("id","name","joinDate","ssn","Grade");
// 변경
FilterProvider filters = new SimpleFilterProvider().addFilter("UserInfoV2",filter);
MappingJacksonValue mapping = new MappingJacksonValue(userV2);
mapping.setFilters(filters);
return mapping;
}
BeanUtils ->>객체를 복사해서 사용가능함.
import org.springframework.beans.BeanUtils;