2016-11-29 5 views
0

Enunciate를 사용하여 내 REST API의 설명서를 자동으로 생성하고 싶습니다.Java 인터페이스를 데이터 형식으로 사용할 수 있습니까?

JAX-RS 주석이 코드는 이런 식입니다 :

@POST 
@Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_XML}) 
@Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML}) 
public IAuthentication login(CLogin aLogin) throws XException { 
    return this.pManager.authenticate(aLogin); 
} 

IAuthentication는 인터페이스이며, 그것은 하나 남아있다. 이는 주사를 사용하고 authenticate() 메서드에서 반환 한 정확한 유형을 예측할 수 없기 때문입니다. CLogin 그러나 클래스입니다 만, authenticate()가 받아들이는 타입의 전문이기 때문에 괜찮습니다.

지금 내 문제는 요청 본문 만 응답 본문에있는 문서이며 응답 본문에는 없다는 것입니다. 담아서는 다음과 같은 메시지와 함께, 잠재적 인 데이터 유형을 찾을 때 Java 인터페이스를 무시하는 것 같다

[DEBUG]이 클래스 또는 열거 아니기 때문에 [담아서] com.example.IAuthentication 잠재적 인 잭슨 타입이다 .

내 인터페이스에는 JAXB 주석이 주석으로 지정됩니다. 소스 경로에서 액세스 할 수 있습니다.

@XmlRootElement 
public interface IAuthentication { 
    /* methods signatures */ 
} 

Java 인터페이스가 데이터 유형으로 OK이며이를 고려해야한다는 것을 알리는 방법이 있습니까?

부록

이 방법의 JSON 출력의 실제 예 : this issue에 @stoicflame 응답으로 당

{ 
    "token": "imec51lpb72lgsdrb0ftvfomt3", 
    "auth_key": "" 
} 
+0

인터페이스를 구현하는 클래스에 Jaxb 주석을 사용하여 주석을 달 수 있습니까? – karelss

+0

나는했다. '@XmlRootElement 공용 클래스 CAuthentication IAuthentication implements' 클래스가 이미 있습니다. 데이터 유형 목록에 표시됩니다. 그러나 POST 메서드의 응답 본문은 아직 문서화되어 있지 않습니다. –

+0

jaxb의 어떤 구현을 사용하고 있습니까, 아마도 Jackson입니까? – karelss

답변

0

버전하게 발음의 2.7 자바를 지원하지 않는 것 인터페이스를 데이터 유형으로 사용합니다.

나는 JavaDoc 태그 @returnWrapped을 사용했다. 또 다른 옵션은 Enunciate 관련 주석 @TypeHint입니다. JavaDoc 태그는 외부 런타임 종속성을 절약합니다.

편집 : 버전 2.9.0 of now now supports documenting interface types.

관련 문제