Ich habe einen JAX-RS-Dienst (MyService) mit einer Reihe von Unterressourcen erstellt, von denen jede eine ist Unterklasse von MySubResource. Der Teilressourcenklasse wird gewählt wird gepflückt auf der Grundlage der in dem Pfad MyService gegebenen Parametern, zum Beispiel:So erstellen Sie einen JAX-RS-Dienst, bei dem die Unterressource @Path keinen führenden Schrägstrich hat
@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);
}
}
wo MyPlacesSubResource und MyPeopleSubResource sind beide Unterklassen von MySubResource.
MySubResource ist definiert als:
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();
}
}
Ergebnisse durch entsprechenden MessageBodyWriters in Abhängigkeit von dem MIME-Typ der Antwort verarbeitet wird.
Während dies funktioniert es in Pfade führt wie/people/Bob/html oder/people/Bob/xml, wo, was ich will wirklich /people/Bob.html ist oder /people/Bob.xml
Hat jemand wissen, wie ich erreichen kann, was ich tun möchte?
Danke, das ist ziemlich genau das, was ich wollte. Ich muss mich nur daran erinnern, wenn ich diese Funktion das nächste Mal brauche (vorausgesetzt, wir ziehen nicht aus dem Trikot aus: /) – Matt