Java [WebApp][Rest][Best Practice] Ressourcen-Verwaltung; pro Uri ein Servlet?

  • Ersteller Ersteller Tersus
  • Erstellt am Erstellt am
T

Tersus

Gast
Grüßt euch,

einige Fragen quälen mich im Design meiner rest-basierenden WebApp.

  1. Ist es sinnvoll, pro Ressource/Uri einen eigenen Servlet anzulegen?
  2. Gegenfrage zur 1.: Ist es sinnvoll mehrere Get-Anfragen mit entsprechend unterschiedlichen URIs in einem Servlet zu verwalten?
  3. Gibt es eine Möglichkeit, den Pfad einer Superklasse zu erweitern?
 
Da wurde ich wohl missverstanden. :) Ich nutze bereits eine Referenzimplementierung von JAX-RS. ;)

Meine Frage etwas konkreter und mit Quelltext.

Ich biete innerhalb eines Servlets mehrere Ressourcen an.

Code:
...
    // DatumA

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/datenA")
    public DatenA[] getDatenA(...);

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/datenA/{key}")
    public DatenA getDatenAByKey(@PathParam("key") ...);
    
    // DatumB

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/datenB")
    public DatenB[] getDatenB(...);
    
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/datenB/{key}")
    public DatenB getDatenBByKey(@PathParam("key") ...);
...

Wäre es sinnvoller eine Klasse pro Ressource zu verwenden?
 
Eine Klasse pro Ressource. Path kann auch auf der Klasse, anstatt auf der Methode annotiert werden. Dann sind weitere Path-Annotationen auf den Methoden relativ zur Annotation auf der Klasse. Wenn man eine Methode nur mit Path ohne HTTP-Verb (GET etc.) annotiert, dann liefert die Methode eine Subressource.
Code:
@Path("main")
public class MainResource {
	@Path("sub")
	public SubResource sub() { }

	@GET @Path("{id}")
	public Main get(@PathParam("id") int id) {}
}

// @Path nicht erforderlich.
public class SubResource { }
 
Zurück
Oben