Frage

Ich versuche, mit Jersey einen REST-Webdienst zu entwickeln.Meine Anforderung besteht darin, dass ich auf den Webdienst zugreifen und Daten zurückgeben kann, basierend auf den übergebenen PatParam-Parametern.Mein Webservice sieht bisher wie folgt aus:

@GET
@Produces(MediaType.APPLICATION_JSON)
@Consumes({ "application/xml", "application/json", "application/x-www-form-urlencoded" })
@Path("/1.0/people{extension:(.json)*}/{personId:([^/]+?)?}{entityExtension:(.json)*}")
public String getLocation(@PathParam("extension") String extension, @PathParam("personId") String personId,@PathParam("entityExtension") String entityExtension)
{
    if ((personId==null ||personId.equals("")) && (extension == null || extension.equals("")))
        return "No Id, and no extension";
    else
        return "personId= "+personId + ", extension= " + extension+", entityExtension= "+entityExtension;
}

Mit dem obigen Code im Hinterkopf versuche ich Folgendes zu erreichen:

http://localhost:8080/Jersey/RestService/1.0/people.json

Sollte die Liste aller Personen im „json“-Format zurückgeben (daher die Erweiterung .json)

Jetzt möchte ich in der Lage sein, die Informationen für eine bestimmte Person abzurufen, indem ich einfach die ID der Person eingebe und die Informationen der Person basierend auf der Erweiterung in json/xml zurückgebe:

http://localhost:8080/Jersey/RestService/1.0/people/Mouhammed89.json

Mit der obigen URL sollte ich die Informationen für die PersonId zurückgeben:Mouhammed89 und Rückgabe der Informationen im JSON-Format.

Ich weiß, dass mein Problem bei den regulären Ausdrücken liegt, die ich verwende, daher würde ich mich sehr über Hilfe bei der Erstellung freuen.

War es hilfreich?

Lösung

IMHO-Container (List) und Artikel (Person) URL sollten gesondert behandelt werden.Und Sie benötigen keine explizite Angabe .json Präfix für die Rückkehr JSON Antwort, nur die Anmerkung am API Das Niveau sollte ausreichen.

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/1.0/people") //no need for .json suffix as API only return JSON format
public List<String> allLocations(..){ //jackson etc. will convert return type to json string 
..
}

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/1.0/people/{personId: \\d+}")//digits only
public String getLocation(..){ //jackson etc. will convert return type to json string 
..
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top