私たちは、自動WADL生成の優れた機能を利用して、RESTfulなAPI実装にJerseyを使用しています。@PathParamからWADLへの可能な値を含める
単なる例として、我々は方法
@GET
@Path("/{id}/{attribute}")
@Produces(MediaType.APPLICATION_JSON)
public Object getAttributeByID(@PathParam("id") long id, @PathParam("attribute") String attribute) {
....
}
これはWADLで次の断片を生成します:
<param type="xs:string" style="template" name="attribute:.*"/>
属性はname
、type
、size
することができ、我々は値を検証するだけでなく、希望を実行時にも生成されたwadlでそれを示すthis documentこのような機能は、いくつかのタグを生成することによってサポートされるべきである<option>
<param>
、i .e。私は次のようなものを期待しています:
<param type="aws:Attributes" style="template" name="attribute">
<option value="name"/>
<option value="type"/>
<option value="size"/>
</param>
私の問題はジャージーでそれを有効にすることです。関連する文書を見つけることができなかったと私はString
からenum
にパラメータの種類を変更し、おそらく場合は、この機能が自動的に動作することを想定ので、私はにメソッドのシグネチャを変更した場合:
@Path("/{id}/{attribute}")
@Produces(MediaType.APPLICATION_JSON)
public Object getAttributeByID(@PathParam("id") long id, @PathParam("attribute") Attribute attribute) {
....
}
public enum Attribute {
name, type, size
}
ジャージーはまだオプションなしで<param>
タグを生成し、パラメータのタイプはまだxs:string
です。
ジャージーのコードで見つけようとしましたが、関連するJAXBアノテーションを持つクラスcom.sun.research.ws.wadl.Option
が見つかりましたので、関連性があるようですが、どのように動作させるかわかりません。問題はWadlGeneratorConfig
にあると思います。
public class OurWADLGenerator extends WadlGeneratorConfig {
@Override
public List<WadlGeneratorDescription> configure() {
return generator(WadlGeneratorApplicationDoc.class)
.prop("applicationDocsStream", "application-doc.xml")
.generator(WadlGeneratorResourceDocSupport.class)
.prop("resourceDocStream", "resourcedoc.xml").descriptions();
}
}
私はここで何をしないのです。ここで
は、私たちがOurWADLGenerator
コードがあるweb.xml
<filter>
<filter-name>REST-API</filter-name>
<filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class>
................
<init-param>
<param-name>com.sun.jersey.config.property.WadlGeneratorConfig</param-name>
<param-value>com.mycompany.resource.OurWADLGenerator</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.mycompany</param-value>
</init-param>
</filter>
にジャージー定義の関連部分ですか? ありがとうございます。
'パブリック列挙:ここ
はそのような何かを、あなたのチェーンに挿入するタイプ
Enum
そしてもちろんのパラメータの
<option>
要素を追加するサンプルOptionsWadlGenerator
、ありますAttribure'は 'public enum Attribute'でなければなりません...あなたのコードからコピーされたのでしょうか? –@martinjakubik、確かにタイプミスでした。ありがとうございました。私は投稿を編集してこのミスを修正しました。 – AlexR