작성
·
360
·
수정됨
0
error/500.html 을 만들고
@RequiredArgsConstructor
@Controller
public class ProductController {
@GetMapping("/api/response")
public String responseStatusEx1() {
throw new RuntimeException();
}
}
위와 같이 연습코드를 작성하면 웹페이지에서는 제가만든 500오류페이지가 나오는데 PostMan에서는
{
"timestamp": "2023-12-19T03:41:17.680+00:00",
"status": 500,
"error": "Internal Server Error",
"path": "/api/response-status-ex1"
}
Accept: text/html이면 잘 나오나 Accept: */* 이면 위와같이 항상 Json형식으로 나옵니다.
우선순위가 Json형식이 높아서 그런건지 알려주시면 감사하겠습니다.
답변 1
3
안녕하세요. 코딩먹는하마님, 공식 서포터즈 OMG입니다.
스프링 부트 애플리케이션에서는 BasicErrorController
가 기본 오류 처리를 담당하는데요,
Accept
헤더에 따라 적절한 오류 응답 형식을 결정합니다.
Accept
헤더가 text/html
일 때는 HTML 오류 페이지를 반환하고,
그렇지 않은 경우 (예를 들어 */*
인 경우) JSON 응답을 반환합니다.
인텔리제이에서 BasicErrorController 클래스를 검색해서 찾은 후, 아래 캡쳐 드린 화면과 같이 중단점을 걸고
디버깅 모드로 확인해보시면 좋을 것 같아요 😀
@RequestMapping 어노테이션이 선언된 코드가 딱 저렇게 2개 존재합니다^^
감사합니다.