2014-07-18 35 views
1

我正在研究一個相當大的API(390+函數),並且我試圖將文檔團隊所需的所有信息彙總在一起,以便爲該項目創建文檔。API的服務發現設計

我決定使用JSON Hyperschema來表示這個。

我創建了一個註釋處理器,從我的代碼中查找所有javax.ws.rs.Path註釋,並抓取Javadoc,http方法(來自注釋)和其他參數信息,但我遇到了一個問題。

超架構建議和我的項目規範要求,通過API發送的對象將作爲架構包含在超架構中。通常我會用傑克遜來完成這一點。但是,因爲我處於不在主API項目中的註釋處理器中,所以我不能在不生成錯誤的情況下使用類引用(例如,User.class,其中用戶是API項目中的對象,而不是我的處理器中的對象)。 (這解釋了here)。

我的問題是,這個限制的最佳方法是什麼?我已經提出了一種方法,下面解釋,但我希望它可以插入任何其他服務(格式相同)以記錄它們。

作爲一個解決方案,我曾想過在編譯時和運行時中斷我的生成器。在編譯時,我會用佔位符生成JSON hyperschema來引用對象模式。它也會生成一個包含所有對象全名的資源文件。

在運行時,我打算爲返回的對象生成模式,然後將鏈接插入到JSON中。

恕我直言,這個解決方案看起來不是很「優雅」。有沒有人有任何洞察到其他方式來實現這一目標?

+0

?看看Jersey用來生成WADL的方法(https://jersey.java.net/documentation/latest/wadl.html)。您可能會發現它很有幫助。 –

+0

這對於閱讀資源看起來很有幫助,我認爲我可能會改變資源處理的方式,但我仍然需要閱讀javadoc,該文件將在此時消失。 – Vidia

+0

澤西團隊已經實現了一個doclet,用於存儲進一步WADL生成的javadoc信息。看看:https://java.net/projects/jersey/sources/svn/show/trunk/jersey/samples/generate-wadl –

回答