Question

J'essaie d'utiliser Jersey pour développer un service Web REST.Mon exigence est que je puisse accéder au service Web et renvoyer des données, en fonction des paramètres PatParam transmis.Jusqu'à présent, mon service Web est le suivant :

@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;
}

Avec le code ci-dessus à l'esprit, ce que j'essaie de réaliser est le suivant :

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

Doit renvoyer la liste de toutes les personnes au format "json" (d'où l'extension .json)

Maintenant, je veux pouvoir obtenir les informations sur une personne particulière en mettant simplement l'identifiant de la personne et renvoyer les informations de la personne en json/xml en fonction de l'extension :

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

Avec l'URL ci-dessus, je devrais renvoyer les informations pour le personId :Mouhammed89, et renvoyant les informations au format json.

Je sais que mon problème vient des expressions régulières que j'utilise, j'apprécierais donc vraiment votre aide pour les créer.

Était-ce utile?

La solution

Conteneur à mon humble avis (List) et l'article (Person) URL doivent être traités séparément.Et vous n'avez pas besoin d'explicite .json préfixe pour revenir JSON réponse, seule l'annotation à la API le niveau devrait suffire.

@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 
..
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top