본문 바로가기

TIL

슬기의 TIL - 2023.05.30 (Swagger + Docker log + Json boolean)

Swagger를 적용시키고 http://localhost:8080/swagger-ui/index.html 에 접속하니까 404 에러가 떴다..!!

 

지난 프로젝트들에서 적용한것과 동일하게 했는데, 이게 무슨 일????

 

구글링을 해본 결과, 스프링부트 3버전에서 springdoc을 사용하려면 v2를 사용하라고 한다.

 

지난 프로젝트들은 스프링부트 2버전이었는데, 이번 프로젝트에서는 3버전을 사용해서 버전 차이가 발생했다.

공식 문서에서 important라고 강조되어 써있었다. 이래서 공식문서를 보라고 하는구나!

 

 

build.gradle에 implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'를 주입해주고 실행하니 문제 해결!!

 

 

참고

https://springdoc.org/#getting-started

https://colabear754.tistory.com/130

 


 

Docker 로그 확인

배포 후 cors 문제가 발생하여 log 확인이 필요했다.

doker에서 로그 확인 하는 방법은 docker logs -f 컨테이너이름

자세히 알고 싶으면 docker logs --help하면 된다!

 


 

Json boolean

소셜로그인 시 추가 회원 정보를 동의와 함께 입력받는 기능을 구현하다가 문제를 만났다..!

동의 여부를 boolean값으로 true를 넘겨주는데, false가 찍히는 문제다.

 

 

결과는 성공으로 나오는데....

 

 

받아온 UserInfoRequestDto의 boolean값을 찍어보면 false로 나온다.

혹시 기본형 참조형 문제인가 싶어 Boolean으로 바꿔서 실행해보았다.

 

 

이번엔 null이 찍힌다.....................ㅠㅠ

 

조금 더 알아보았더니 json object 상호 변환시 lombok으로 인한 boolean 기본형 오류가 있다고 한다.

@RestController를 통해 기본형 boolean이 json으로 변환될 경우 is가 prepix로 붙기 때문에 받는 오브젝트에서는 변환이 안되고 default 값인 false가 될 수 있다고 한다.

 

@Data 어노테이션을 붙여주고, @JsonProperty로 json의 속성명을 직접 지정해줘서 문제를 해결했다!

 

 

참고

https://eclipse4j.tistory.com/343