Il existe une différence fondamentale entre les paramètres de requête et les paramètres de chemin. Cela va comme ceci:
www.your_domain?queryparam1=1&queryparam2=2
- paramètres de requête.
www.your_domain/path_param1/entity/path_param2
- paramètres de chemin.
Ce que j'ai trouvé surprenant, c'est que dans le monde de Spring MVC, beaucoup de gens confondent l'un avec l'autre. Bien que les paramètres de requête ressemblent plus à des critères de recherche, les paramètres de chemin identifieront probablement de manière unique une ressource. Cela dit, cela ne signifie pas que vous ne pouvez pas avoir plusieurs paramètres de chemin dans votre URI, car la structure des ressources peut être imbriquée. Par exemple, disons que vous avez besoin d'une ressource automobile spécifique d'une personne spécifique:
www.my_site/customer/15/car/2
- recherche d'une deuxième voiture d'un 15e client.
Quel serait un cas d'utilisation pour mettre tous les paramètres de chemin dans une carte? Les paramètres de chemin n'ont pas de "clé" lorsque vous regardez un URI lui-même, ces clés à l'intérieur de la carte seraient extraites de votre annotation @Mapping, par exemple:
@GetMapping("/booking/{param1}/{param2}")
À partir de la perspective HTTP / REST, les paramètres de chemin d'accès ne peuvent pas vraiment être projetés sur une carte. Tout dépend de la flexibilité de Spring et de son désir de s'adapter à tous les caprices des développeurs, à mon avis.
Je n'utiliserais jamais une carte pour les paramètres de chemin, mais cela peut être très utile pour les paramètres de requête.
@RequestParam MultiValueMap<String, String>