인프런 커뮤니티 질문&답변

JuHee_Lee님의 프로필 이미지

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

스프링 부트 기본 오류 처리

BasicErrorController 적용시 json 안나옴.

작성

·

153

0

=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]//@Component public class WebServerCustomizer implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {주석 해놓고 아래 포스트맨도 accept 설정 제대로 했는데 계속 json이 아니라 html 결과 값이 나옵니다ㅠ
스크린샷 2024-06-14 오후 5.36.00.png

답변 3

0

JuHee_Lee님의 프로필 이미지
JuHee_Lee
질문자

오타 났었나봐여ㅠㅠ 감사합니다

0

안녕하세요. JuHee_Lee님, 공식 서포터즈 David입니다.

에러가 발생하는 경우, 인텔리제이에서 구체적인 오류 메시지를 출력하게 됩니다.

구체적인 오류 메시지 전체를 질문과 함께 올려주시면 구체적으로 답변드릴 수 있는 점 참고해 주세요:)

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

Spring Boot에서 BasicErrorController를 사용한 에러 처리 시 JSON이 아닌 HTML로 결과가 나오는 문제는 여러 요인으로 인해 발생할 수 있습니다. 하지만 제공된 정보만으로는 정확한 원인을 파악하기 어렵습니다.

일반적으로 Spring Boot 애플리케이션에서 서버 오류 발생 시, 브라우저 클라이언트가 아닌 기계 클라이언트(예: Postman)에서는 Accept 헤더를 application/json으로 설정하면 JSON 형태의 응답을 받을 수 있습니다. JuHee_Lee님이 언급하신 것처럼 Accept 헤더가 올바르게 설정되어 있음에도 불구하고 HTML로 반환되는 경우, 다음과 같은 점들을 확인해 볼 필요가 있습니다:

  1. @RestControllerAdvice 또는 @ControllerAdvice를 통해 구현된 글로벌 에러 핸들러가 존재하는지 확인하세요. 이러한 클래스 내에서 반환 타입이 ResponseEntity@ResponseBody를 포함하여 JSON으로 응답할 수 있도록 구성되어 있어야 합니다.

  2. application.properties 또는 application.yml 설정 파일에서 적절한 서버 오류 관련 설정이 구성되어 있나 확인해 보세요. 예를 들어, server.error.whitelabel.enabledfalse로 설정되어 기본 화이트라벨 에러 페이지가 비활성화되었는지 확인하십시오.

  3. 스프링의 내부 설정보다는 커스텀 에러 컨트롤러나 핸들러의 로직이 에러 처리 과정에 영향을 미치고 있는지 검토해 보세요.

현 상황에서 더 구체적인 해결 방안을 제공하기 어렵지만, 위의 검토 사항들을 통해 문제의 원인을 좁혀 나갈 수 있을 것입니다. 또한, 스프링 부트의 공식 문서나 관련 커뮤니티를 통해 추가적인 정보를 찾아보는 것도 문제 해결에 도움이 될 수 있습니다.