TIL
20221229 TIL optional한 dto의 값을 어떻게 하면 좋을까?
jiwoosmile
2022. 12. 29. 17:57
포트폴리오 작업을 하면서 필수값이 아닌 입력값을 어떻게 다루면 좋을지 고민이 되었다.
예를 들어 위 form에서 포인트를 입력하지 않아도 질문을 올릴 수 있다.
이 때 null 값이 들어오게 되는데, 이를 어떻게 백엔드에서 처리를 하면 좋을지 고민이 되었다.
https://www.baeldung.com/jackson-optional
DTO의 필드를 Optional로 쓰면 어떨까 했지만 위와 같이 안된다는 글을 찾을 수 있었고,
많은 검색 이후로 이에 대해 아래와 같은 답을 찾을 수 있었다.
// QuestionController.java
Optional<Long> pointsOptional = Optional.ofNullable(questionRequestDto.getPoints());
Points points = pointsOptional.isPresent()
? new Points(questionRequestDto.getPoints())
: new Points(0L);
컨트롤러에서 위와 같이 Optional로 값을 받아주고,
삼항 연산자를 사용해서 값이 있다면 받아온 값을 사용하고,
없을 때는 없을 때에 해당하는 값을 넣어주는 방식을 사용하면 된다.
위 방식을 이용하면 null일 수 있는 값을 언제든 다룰 수 있게 된다.
어떻게 하면 좋을지 모르는 문제를 만났을 때 어떻게 해결할 수 있을지 고민을 해보고,
만약 그 방법이 통하지 않는다면 다른 해결법을 찾아보도록 하자!