MediaType.APPLICATION_JSON_UTF8


테스트 코드를 작성하다가, MediaType.APPLICATION_JSON_UTF8 부분이 Deprecated 된 것을 확인할 수 있었다.
밑줄로 표시까지 해줬는데, 그냥 대수롭지 않게 생각했던 것 같다. 그리고 개발자로서 이러한 부분을 보고도 지나친게 조금은 부끄러웠다. 다음부터는 이러한 부분을 발견하면 지나치지 말고 왜 Deprecated 되었는지 알아보고 API 개발자가 의도한 방향으로 사용을 하도록 노력해야겠다.

API 주석을 읽어보니 이유는 다음과 같았다.
- 크롬 같은 주요 브라우저가 스펙을 준수하고, 이제
UTF-8같은 파라미터 값을 넣어주지 않아도 올바르게 해석 되기 때문이다.
따라서 이제는 APPLICATION_JSON_UTF8을 사용하는 것 보다는 그냥 APPLICATION_JSON 을 사용하면 된다.
배경

-
위의 링크에 나와있듯이,
Content-Type을application/json으로 명시를 해도 인코딩이 깨진다고 버그 리포팅을 하였다. -
charset=utf-8로 명시했을 때는 동작하지만charset은application/json에 명시되어있지 않고 무시 되어야 한다고 문제를 제기하고 있다.
RFC4627


- 인코딩 부분을 살펴보면,
JSON타입은 유니코드로 인코딩 되어야 하며 디폴트로UTF-8이 적용된다는 부분을 살펴볼 수 있다.
느낀점
-
만약 나였으면 그냥 내가 잘못 한 거구나라고 하면서
charset옵션을 주고 스펙까지 확인해볼 생각을 하지 않을 것 같다. -
이런 점은 나도 배워야겠다는 생각을 했다.