브라우저는 주소창을 통해 이동하는 등 정확한 정보를 알 수 없는 경우 몇 가지 정보는 기본값으로 설정한다.
Chrome의 경우 Accept 기본값은 다음과 같다:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7이 값은 */* 보다 application/xml이 우선순위가 높아서 REST API를 디버깅할 때 불편하게 작용하기도 한다.
예로 Spring 7.0.3에는 XmlMapper를 자동으로 Codec에 등록하는 기능이 추가되었는데,
크롬 주소창으로 간단한 GET 요청의 API를 호출하면 XmlMapper가 선택되어서 인코드 할 수 없는 오류가 발생한다.
java.lang.UnsupportedOperationException: Stream encoding is currently not supported
at org.springframework.http.codec.xml.JacksonXmlEncoder.encode(JacksonXmlEncoder.java:109)
Suppressed: The stacktrace has been enhanced by Reactor, refer to additional information below:
Error has been observed at the following site(s):
*__checkpoint ⇢ HTTP GET "/my/test-api" [ExceptionHandlingWebHandler]