2016-11-29 204 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接口是數據類型並且必須考慮的。

附錄

這種方法的JSON輸出的一個真實的例子:

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

你可以嘗試使用Jaxb註釋來註釋實現接口的類嗎? – karelss

+0

我做到了。類'@XmlRootElement 公共類CAuthentication實現IAuthentication'已經存在。它顯示在數據類型列表中。但是,方法POST的Response Body仍未記錄。 –

+0

您使用的是jaxb的哪個實現,也許傑克遜? – karelss

回答

0

按@stoicflame答案this issue,版本字正腔圓的2.7似乎不支持Java接口作爲數據類型。

我使用JavaDoc標記@returnWrapped。另一個選項是特定於Enunciate的註釋@TypeHint。儘管JavaDoc標籤爲我提供了外部運行時依賴關係。

編輯: 版本2.9.0現在發音supports documenting interface types

相關問題