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;