LeoHeo / collect

e-commerce toy project (WIP)
MIT License
4 stars 0 forks source link

@requestBody DTO에서 Enum에 invalid한 값이 넘어올때 #3

Open LeoHeo opened 6 years ago

LeoHeo commented 6 years ago

삽질의 시작

public enum Provider {
  GENERAL,
  FACEBOOK,
  GOOGLE
}

위와 같은 enum이고 아래같이 invalid한 provider값을 post함

{
    "provider": "test"
}

원인

@PostMapping("/signup")
public void singup(@Valid @RequestBody UserSaveDto userSaveDto, BindResult result) {
  if (result.hasErrors()) {
    throw new BadRequestException("missing requied value");
  }

  // do somthing..
}

해결

@JsonCreator
public static Provider create(String requestValue) {
  return Stream.of(values())
            .filter(v -> v.toString().equalsIgnoreCase(requestValue))
            .findFirst()
            .orElse(null)
}