2012-04-11 5 views
0

Die GET der folgenden ausgelöst mit der folgenden uriWie würde ich REST uri so konfigurieren, dass dieser uri

/Patha/SomePathA

@Path("/PathA") 
public class SubscriptionEntry 
{ 
    @Path("{PathA}") 
    public SomeType SomeMethod(@PathParam("parA") String userip) 
    { 
      //This is called!!! with /PathA/SomePathA 
      return new SomeResource(uriInfo,request,userip,httpreq); 
    } 
} 

wo some ist so etwas wie dieses

public class SomeResource 
{ 
    @GET 
    public Type AnotherMethod 
    { 
     ..... 
     ..... 
    } 

     @Path({"What is suppose to be here???? since this class has no name??}") 
     public MyType MyMethod() 
     {.... 

     } 


} 
reagieren

Meine Frage ist, wie kann ich die Klasse oben (Was ist im Pfad erforderlich) anpassen, so dass die MyMethod mit Uris wie

ausgelöst wird

/Patha/SomePathA/Test

oder

/Patha/SomePathA/SomePathB/Test

ich so etwas wie folgt tun versucht, aber es nicht

@Path("/Test") 
     public MyType MyMethod() {} 

Irgendwelche Vorschläge auf funktioniert Wie könnte ich diese Arbeit machen oder was ich vermisse?

+0

Was Sie codiert haben wird nicht funktionieren: Jersey wird Anmerkungen scannen nur einmal, und definieren nur einmal die Zuordnung URL <-> Methode. Wenn die Methode aufgerufen wird, ist die URL-zu-Methode-Zuordnung bereits aufgetreten. Sie leiten den Methodenaufruf um, aber für Jersey ist die URL bereits festgelegt. –

Antwort

0

Erstens wäre der Aufruf einer Ressource von einer anderen Ressource eine falsche Annäherung an die RESTful-Architektur. Zweitens, was Sie gefragt haben, ist nicht möglich.

Stattdessen sollten Sie die Beziehungen zwischen der resources.Example identifizieren:

  • Klasse viele Schüler hat.
  • Student gehört zu einer Klasse.

Dann bilden Sie Ihre URLs entsprechend. wie

  • GET/Klasse -> Holen Sie alle Klassen
  • GET/Klasse/{id} -> Erhalten Sie eine bestimmte Klasse
  • GET/Klasse/{id}/Studenten -> Studenten von bestimmten Klasse Get
  • GET/Student -> alle Schüler Get
  • GET/Student/{id} -> Get ein mparticular Student

Here is nice article on URL design

Verwandte Themen