Spring Boot에서 RESTful API를 개발하다보면 RequestBody에 Enum 값을 넣어주어야 하는 경우가 있습니다. 이 때, Enum 값이 한글로 구성되어 있는 경우, Controller에서 해당 Enum 값을 파싱하지 못하여 400 Bad Request 오류가 발생할 수 있습니다. 이번 글에서는 RequestBody에 한글 값이 포함된 경우, 대응하는 Enum 값이 영어로 구성된 경우의 해결 방법에 대해 알아보겠습니다.
우선, Enum 클래스를 예시로 살펴보겠습니다. 아래와 같이, CardOwnerTypes라는 Enum 클래스가 한글 값으로 구성되어 있다고 가정해봅시다.
@Getter
public enum CardOwnerTypes {
PERSONAL("개인"),
CORPORATION("법인");
private String type;
CardOwnerTypes(String type) {
this.type = type;
}
}
여기서, RequestBody로 {"cardOwnerType": "개인"}과 같은 한글 값이 들어왔을 경우, 해당 값을 파싱하지 못하여 400 Bad Request 오류가 발생할 수 있습니다. 이 경우, 한글 값을 영어 Enum 값으로 변환해주어야 합니다.
이를 위해서는, @JsonCreator 어노테이션을 활용하여, 한글 값을 영어 Enum 값으로 변환하는 메서드를 추가해주어야 합니다. 아래와 같이, 해당 메서드를 추가하면 됩니다.
@Getter
public enum CardOwnerTypes {
PERSONAL("개인"),
CORPORATION("법인");
private String type;
CardOwnerTypes(String type) {
this.type = type;
}
@JsonCreator
public static CardOwnerTypes fromValue(String value) {
switch (value) {
case "개인":
return CardOwnerTypes.PERSONAL;
case "법인":
return CardOwnerTypes.CORPORATION;
}
return null;
}
}
이렇게, RequestBody에 한글 값이 포함된 경우, 해당하는 Enum 값이 영어로 이루어져 있는 경우에 대한 해결 방법을 알아보았습니다.
Entity란? (0) | 2022.06.02 |
---|---|
마침표(.)로 split 하는 방법 (0) | 2022.05.12 |
[vs code] 자바 개발환경 세팅하기 (0) | 2021.09.24 |
[JAVA] Java 설치 (JAVA버전 변경하기) (1) | 2021.09.22 |
Java 숫자 사이의 형변환 (0) | 2020.07.08 |