• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

오류 발생 시 Postman에서 항상 JSON형식으로 반환됩니다.

23.12.19 12:51 작성 23.12.19 13:02 수정 조회수 238

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님의 프로필

OMG

2023.12.19

안녕하세요. 코딩먹는하마님, 공식 서포터즈 OMG입니다.

스프링 부트 애플리케이션에서는 BasicErrorController가 기본 오류 처리를 담당하는데요,

Accept 헤더에 따라 적절한 오류 응답 형식을 결정합니다.

Accept 헤더가 text/html일 때는 HTML 오류 페이지를 반환하고,

그렇지 않은 경우 (예를 들어 */*인 경우) JSON 응답을 반환합니다.

 

인텔리제이에서 BasicErrorController 클래스를 검색해서 찾은 후, 아래 캡쳐 드린 화면과 같이 중단점을 걸고

디버깅 모드로 확인해보시면 좋을 것 같아요 😀

 

@RequestMapping 어노테이션이 선언된 코드가 딱 저렇게 2개 존재합니다^^

image

감사합니다.