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
옵션을 주고 스펙까지 확인해볼 생각을 하지 않을 것 같다. -
이런 점은 나도 배워야겠다는 생각을 했다.