0

enunciateを使用して、JerseyベースのRESTAPIのドキュメントを再生成しようとしています。いくつかのつまずきを打つ:

@GET
@Produces(MediaType.APPLICATION_JSON)
public Iterable<Project> listAll() {
    ...
}

EnunciateはIterableを補間できないようです。私のドキュメントでは、「element :( custom)」を取得しています。プロジェクトタイプには@XmlRootElementと@JsonRootTypeの注釈が付けられていることに注意してください。

同様に、このコードの場合:

@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response save(final T persistable) {
    ...
}

メソッドパラメーター(注:Tにはextends制限があります)とリターンタイプ(Responseはjavax.ws.rs.core.Response)の両方に対して「element:(custom)」を取得します。さらに、enunciateはリターンのメディアタイプを理解できないようです:XML、JSON、および*がリストされています(考えてみると、そこに何が欲しいのか正確にはわかりませんが、そうではないことはわかっています。)

何か案は?

4

1 に答える 1

1

Enunciate は、JAX-RS仕様を使用してドキュメントを生成します。残念ながら、このIterableインターフェイスは正式にサポートされている JAX-RS オブジェクト タイプではないため、カスタム メッセージ ボディ ライターを使用しIterableて JSON にシリアル化しています ( Jacksonだと思いますか?)。

したがって、戻り値の型について正式にしたい場合は、Enunciate が認識して の代わりにそれを返すことができるラッパー Bean を作成できますIterable

@XmlRootElement
public class Projects {
  public Collection<Project> projects;
}
于 2013-07-06T20:28:04.187 に答える