RESTful 자바 패턴과 실전 응용: 2장 리소스 설계
2장 리소스 설계 Contents Negotiation (콘텐츠 협상) 동일한 URI의 리소스를 여러 가지 표현형으로 제공하여, 클라이언트가 원하는 하나를 선택할 수 있게 하는 것을 말한다. 콘텐츠 협상에는 HTTP 헤더를 이용하는 방법과 URL 패턴을 이용하는 두 가지 방법이 있다. HTTP 헤더를 이용해서 처리하는 것이 더 좋다. 복잡한 비즈니스 관련 문제들을 따로 분리하기 용이하기 때문이다. HTTP 헤더를 이용한 콘텐츠 협상 Accept Accept-Charset Accept-Encoding Accept-Language Accept-Ranges @Produces(MediaType.APPLICATION_JSON) HTTP 406 Not Acceptable : Accept 요청에 정의된 유형을 서비스할 수 없을 경우 HTTP 415 Unsupported Media Type : 요청 유형을 지원하지 않을 경우 Runtime Contents Negotiation in JAX-RS Variant JAX-RS 명세에서 Variant는 미디어 타입, 콘텐츠 언어, 콘텐츠 인코딩, ETags, 최근 변경 헤더, 기타 다른 필수 조건들이 조합된 객체로, 서버가 지원하는 리소스 표현형을 나타낸다. URL 패턴을 이용한 콘텐츠 협상 URL의 확장자(.xml, .json 등)에 따라 처리한다. 엔티티 제공자와 여러 가지 표현형 Java 클래스를 entity(representation)으로 변환하거나 역변환하는 방법들에 대해 설명한다. 변환은 Java Serializable 을 이용한다. Serialization은 MessageBodyWriter, Deserialization은 MessageBodyReader를 이용한다. MessageBodyReader Inbound entity -> Java로 deserialization Representation-to-Java Methods isRe...