2011-10-11 5 views
2

Jersey를 사용하여 Java에서 RESTful API를 개발 중입니다. 우리는 JSON과 XML의 두 가지 입력 형식을 지원하고자합니다.RESTful API - 직렬화 vs '구문 분석'

이 시점에서 필자는 API를 구현하는 두 가지 방법을 고려하고 있습니다. 첫 번째는 들어오는 요청을 매핑 할 수있는 일련의 주석이 달린 POJO를 만드는 것입니다.

둘째, XML 요청을 JSON으로 변환하고 JSON을 수동으로 구문 분석하는 것입니다.

개인적으로 두 번째 방법은 나에게 더 유연한 것처럼 보입니다. 특히 시스템의 일부 개체가 매우 복잡하기 때문에 더욱 그렇습니다.

기본적으로 내가 고려해야 할 첫 번째 옵션 (또는 두 번째 단점)에 대한 이점이 있는지 궁금합니다.

편집 : 내 경우에는 조금 더 자세히 설명하기 위해이 단계에서 주석을 달 수없는 수업이 많이 있습니다 (이 응용 프로그램은 10 년 이상 활발히 개발 된 상태입니다). POJO 경로를 따라 가려한다면 기본적으로 XML/JSON과 직렬화하는 목적을 가진 일련의 새로운 '직렬화'객체를 만들어야합니다.

이러한 클래스는 실제 모델 클래스 (그 중 여러 개체가 같은 개체를 나타낼 수 있음)로 날짜를 관리하도록 관리해야하므로 '수동'메서드를 사용하려고 생각합니다. .

이것이 새로운 프로젝트 였지만 필자는 주석 사용을 확실히 고려할 것이지만 현재 상황을 고려할 때 최상의 옵션인지 확신 할 수 없습니다.

답변

3

두 번째 장점은 첫 번째 방법으로 수행 할 작업이 거의 없다는 점입니다. JAXB 주석이있는 POJO는 확실히 Jersey와 함께 할 수있는 방법입니다. 사용자가 원하는 XML/JSON을 표현할 수없는 경우처럼. 일반적으로 XML과 JSON의 입출력은 사실상 무료입니다.

2

참고 : 저는 EclipseLink JAXB (MOXy)이며, JAXB 2 (JSR-222) 전문가 그룹의 멤버입니다.

저는 Jersey를 사용하여 자바로 RESTful API를 개발 중입니다. 상당히 복잡한 시스템입니다. 우리는 입력의 두 가지 형태 인 JSON과 XML을 지원하고자합니다. 뉴저지는 JSON로/객체를 변환 투하와 JAXB 구현을 사용 기본적으로

@PUT 
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) 
public void put(Customer) { 
    ... 
} 

:

JAX-RS 구현

쉽게 XML 및 JSON 메시지를 모두 걸리는 서비스를 구현할 수

MOXy는 JAXB 런타임 및 주석을 사용하여 원시 XML 및 JSON 바인딩을 지원합니다.클래스의 톤 '하는 수있다

내 경우에는 좀 더 정교한 :이 같은 메타 데이터를 사용하여 XML 및 JSON으로 객체를 매핑 할 수 있습니다 의미 이 단계에서 주석을 달 수 있습니다 (이 응용 프로그램은 활발하게 012 년 10 월 동안 개발 된 입니다).

주석을 추가하기 위해 수정할 수없는 클래스가있는 경우 MOXy의 XML 메타 데이터 문서를 사용할 수 있습니다.

: 이하,이 메타 데이터는 JAX-RS ContextResolver 통해 저지 활용하는 방법의 예는