[Error]HttpMediaType NotAcceptableException

보람찬하루·2023년 11월 5일
1


환경 : windows


에러 : DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation]






배경 :(Sopt 1주차 세미나) ResponseEntity를 이용해서 서버의 응답확인 API생성시 발생







문제상황



### DTO
@RestController
@RequestMapping("/api")
public class HealthCheckController {
    @GetMapping("v5")
    public ResponseEntity<HealthCheckResponse> healthCheck5(){

        return ResponseEntity.ok(new HealthCheckResponse());
    }
 }

Controller

public class HealthCheckResponse {
    private static final String STATUS ="OK";
    private String status;
    public HealthCheckResponse(){
        this.status=STATUS;
    }
}




원인


원인을 알기위해 에러코드를 분석해봤습니다!

HTTP 406

The HyperText Transfer Protocol (HTTP) 406 Not Acceptable client error response code indicates that the server cannot produce a response matching the list of acceptable values defined in the request's proactive content negotiation headers, and that the server is unwilling to supply a default representation.

406 에러는 서버가 허용된 타입의 응답을 생성하지 못할 때 발생하는 통신 에러입니다



HttpMediaTypeNotAcceptableException

요청 핸들러가 허용된 응답을 만들어낼 수 없을 때 발생하는 에러로

여기서 허용된 응답이란 헤더에 정해놓은 허용 타입입니다!

즉 요청한 type으로 응답을 내려줄 수 없는 것이 원인이었습니다!

저의 상황에선 응답 내용에 값이 포함되지 않아서 발생한 문제였습니다




해결


‘HealthCheckResponse’에 ‘@Getter’ 어노테이션을 추가해서 해결할 수 있었습니다

@Getter
public class HealthCheckResponse {
    private static final String STATUS ="OK";
    private String status;
    public HealthCheckResponse(){
        this.status=STATUS;
    }
}
profile
를 만들어 가자

0개의 댓글