2 votes

Tomcat, JAX-RS (maillot), @PathParam : comment passer deux variables contenant des barres obliques ?

J'écris un service REST en utilisant Jersey Java et Tomcat. Voici ma question - comment puis-je accepter deux @PathParam les variables qui incluent des slashs ? c'est-à-dire enrollment/{id}/{name} où id peut être i124/af23/asf et le nom peut être "bob/thatcher".

@GET 
@Path("enrollment/{id}/{name}")
public String enrollPerson(@PathParam("id") String id, @PathParam("name") String name) {
    System.out.println(name +  " " + id);
    return("Enrolled!");
}

J'ai vu cette question : Tomcat, JAX-RS, Jersey, @PathParam : comment passer les points et les barres obliques ? qui a répondu à une partie de ma question, mais qui a donné la solution pour avoir un paramètre qui inclut des slashs (j'ai deux paramètres avec des slashs).

Toute aide serait appréciée !

4voto

LConrad Points 42

Je pense que la réponse est URLEncoding les chaînes de caractères avant l'envoi, puis URLDecoding les chaînes de caractères dans la méthode. Donc ma méthode devrait être :

@GET 
@Path("enrollment/{id}/{name}")
public String enrollPerson(@PathParam("id") String id, @PathParam("name") String name) {
    String decodedName = URLDecoder.decode(name, "UTF-8");
    String decodedId = URLDecoder.decode(id, "UTF-8");
    System.out.println(decodedName + " " + decodedId);
    return("Enrolled!");
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X