いくつかのサブリソースを持つJAX-RSサービス(MyService)を作成しました。各サブリソースは、MySubResourceのサブクラスです。選択されるサブリソースクラスは、MyServiceパスで指定されたパラメータに基づいて選択されます。次に例を示します。
@Path("/") @Provides({"text/html", "text/xml"})
public class MyResource {
@Path("people/{id}") public MySubResource getPeople(@PathParam("id") String id) {
return new MyPeopleSubResource(id);
}
@Path("places/{id}") public MySubResource getPlaces(@PathParam("id") String id) {
return new MyPlacesSubResource(id);
}
}
ここで、MyPlacesSubResourceとMyPeopleSubResourceはどちらもMySubResourceのサブクラスです。
MySubResourceは次のように定義されます。
public abstract class MySubResource {
protected abstract Results getResults();
@GET public Results get() { return getResults(); }
@GET @Path("xml")
public Response getXml() {
return Response.ok(getResults(), MediaType.TEXT_XML_TYPE).build();
}
@GET @Path("html")
public Response getHtml() {
return Response.ok(getResults(), MediaType.TEXT_HTML_TYPE).build();
}
}
結果は、応答のmimetypeに応じて、対応するMessageBodyWritersによって処理されます。
これは機能しますが、/ people / Bob/htmlや/people/ Bob / xmlのようなパスになります。ここで、私が本当に必要としているのは/people/Bob.htmlまたは/people/Bob.xmlです。
誰かが私がやりたいことを達成する方法を知っていますか?