Quelle est la différence entre QueryParam et MatrixParam de JAX-RS?
Quelle est la différence entre JAX-RS @QueryParam
et @MatrixParam
?
À partir de ces documents.Le queryparam et matrixparam les deux peuvent l'emplacement d'une ressource dans les conditions particulières. Quel est donc le cas d'utilisation de différence?
ps:
Queryparam:
url ? key=value;
Matrixparam
url; key=value;
Vous devez vous connecter pour publier un commentaire.
Comme indiqué dans cette documentation Oracle:
Exemple (tiré de ici):
Voir URI suivant les modèles et résultat:
URI Modèle : “/livres/2012/”
getBooks est appelé, année : 2012, auteur : null, pays : null
URI Modèle : “/livres/2012;auteur=andih”
getBooks est appelé, année : 2012, auteur : andih, pays : null
URI Modèle : “/livres/2012;auteur=andih;pays=allemagne”
getBooks est appelé, année : 2012, auteur : andih, pays : allemagne
URI Modèle : “/livres/2012;pays=allemagne;auteur=andih”
getBooks est appelé, année : 2012, auteur : andih, pays : allemagne
Pour une explication de la différence que vous pouvez avoir un coup d'oeil à
URL de la matrice des paramètres vs les paramètres de la demande
@MatrixParam
extrait de l'information de chemin URL segments. Vous pouvez donc avoir@MatrixParam
dans chaque segment de chemin, même avec le même nom, mais leur portée est un segment de chemin.@QueryParam
est, ainsi, les paramètres de la requête étendue. En d'autres mots, vous pouvez avoir par exemple:/books;country=germany/2012;country=france;author=Vian
et c'est légal, et premier pays (solidaire de livres) est sur l'endroit où les livres ont été publiés, et le deuxième pays param (collé à l'année) est d'environ à partir de quel pays ils viennent.Prendre un exemple de n'importe quel Supermarché, Si vous voulez tous les fruits qui seront remplies plusieurs conditions comme type=fruits et gamme de prix commence à partir de 300 et de la liste d'équivalence de 10 fruits, vous pouvez aller pour en dessous de Conception d'API,
Dans l'exemple ci-dessus, la première Matrice des Param
type=fruits
est l'application pour seulement épicerie de ressources mêmerange=300
est l'application pour seulement prix de ressources, mais de Requête Param pour la paginationlimit=10
est l'application à l'ensemble de l'URL de la Requête. Et oui, Si seulement les paramètres de la requête ont été utilisés, vous vous retrouvez avec des paramètres comme "grocery_type" et "grocery_price" et vous perdrez la clarté ajouté par la localité de paramètres au sein de la demande.http://dev.brandstore.com/inventory/grocery/price/?grocery_type=type=fruits&price_range=300&limit=10
j'ai utilisé de la requête param valeursgrocery_type
etprice_range
. Vous êtes libre d'utiliser les param nom que vous voulez. Point est que si vous mettez dans la requête params, alors vous devrez ajouter du contexte à l'param name comme grocery_type signifie qu'elle est le type de l'épicerie. Vous juste ne pouvez pas utilisertype
comme vous l'avez fait dans la matrice des param car il devient de confusion, dans la requête param.