2017-10-19 33 views
1

Soit admettre que, avec Jersey j'expose 2 requêtes qui sont:Priorité Jersey entre les requêtes param de chemin et les requêtes de chemin statique?

  • /bonjour/{name}
  • /bonjour/Goodby

Si l'utilisateur faire/bonjour/Goodby, ne Jersey garantie que c'est la requête "/ hello/goodby" qui sera choisie et non "/ hello/{nom}" avec le nom égal à "goodby"?

Je cas comme ça dans les services que j'exposons, il semble que chemin statique est toujours choisi mais je suis à la recherche d'une sorte de confirmation dans la documentation et je ne vois rien ici: https://jersey.github.io/documentation/latest/jaxrs-resources.html#d0e2271

Répondre

1

Ce ne sera pas dans la documentation. Ça va être dans le JAX-RS Spec. Regardez dans la section « 3.7.2 Demande Matching », et quelque part dans le charabia cryptique vous verrez ceci:

Trier E utilisant le nombre de caractères littéraux dans chaque membre comme la clé primaire

E étant les méthodes jusqu'ici qualifiées basées sur le chemin. Cela signifie que le chemin avec le plus de caractères littéraux doit être priorisé. Dans votre cas, c'est pourquoi /hello/goodbye gagne toujours. goodbye sont des caractères littéraux, alors que {name} a zéro caractères littéraux, c'est un groupe de capture.