Je suis novice en matière de maillot RESTful. Je voudrais demander quelle est la différence entre @PathParam
y @QueryParam
dans le jersey ?
Réponses
Trop de publicités?Les paramètres d'interrogation sont ajoutés à l'url après la balise ?
tandis qu'un paramètre de chemin fait partie de l'URL ordinaire.
Dans l'URL ci-dessous tom
pourrait être la valeur d'un paramètre de chemin d'accès et il existe un paramètre de requête portant le nom de id
et la valeur 1
:
http://mydomain.com/tom?id=1
En plus de la clarification ci-dessus fournie par @Ruben, je veux ajouter que vous pouvez également vous référer à l'équivalent de la même chose dans l'implémentation RESTFull de Spring.
Spécification JAX- RS @PathParam - Lie la valeur d'un paramètre de modèle URI ou d'un segment de chemin d'accès contenant le paramètre de modèle à un paramètre de méthode de ressource, à un champ de classe de ressource ou à une propriété de haricot de classe de ressource.
@Path("/users/{username}")
public class UserResource {
@GET
@Produces("text/xml")
public String getUser(@PathParam("username") String userName) {
...
}
}
@QueryParam - Lie la ou les valeurs d'un paramètre de requête HTTP à un paramètre de méthode de ressource, un champ de classe de ressource ou une propriété de haricot de classe de ressource.
URI : users/query?from=100
@Path("/users")
public class UserService {
@GET
@Path("/query")
public Response getUsers(
@QueryParam("from") int from){
}}
Pour réaliser la même chose en utilisant Spring, vous pouvez utiliser
@PathVariable(Spring) == @PathParam(Jersey, JAX-RS),
@RequestParam(Spring) == @QueryParam(Jersey, JAX-RS)
@javax.ws.rs.QueryParam
This annotation allows you to extract values from URI query parameters.
@javax.ws.rs.PathParam
This annotation allows you to extract values from URI template parameters.
PART-1 : @javax.ws.rs.PathParam
@Path("/mercedes")
public class MercedesService {
@GET
@Path("/e55/{year}")
@Produces("image/jpeg")
public Jpeg getE55Picture(@PathParam("year") String year) {
...
}
If I query the JAX-RS service with GET /mercedes/e55/2006, the getE55Picture()
method would match the incoming request and would be invoked.
PART-2 : @javax.ws.rs.QueryParam
URI might look like this: GET /cus?start=0&size=10
@Path("/cus")
public class GreedCorruption {
@GET
@Produces("application/xml")
public String getDeathReport(@QueryParam("start") int start,
@QueryParam("size") int size) {
...
}
}