Há uma diferença fundamental entre os parâmetros de consulta e os parâmetros de caminho. É assim:
www.your_domain?queryparam1=1&queryparam2=2
- parâmetros de consulta.
www.your_domain/path_param1/entity/path_param2
- parâmetros de caminho.
O que eu achei surpreendente é que, no mundo do Spring MVC, muitas pessoas confundem uma pela outra. Embora os parâmetros de consulta sejam mais parecidos com os critérios de uma pesquisa, os parâmetros de caminho provavelmente identificarão um recurso de forma exclusiva. Dito isto, isso não significa que você não pode ter vários parâmetros de caminho em seu URI, porque a estrutura de recursos pode ser aninhada. Por exemplo, digamos que você precise de um recurso de carro específico de uma pessoa específica:
www.my_site/customer/15/car/2
- à procura de um segundo carro de um 15º cliente.
O que seria um caso de usuário para colocar todos os parâmetros de caminho em um mapa? Os parâmetros do caminho não têm uma "chave" quando você olha para um URI, essas chaves dentro do mapa seriam retiradas da anotação do @Mapping, por exemplo:
@GetMapping("/booking/{param1}/{param2}")
Do ponto de vista HTTP / REST, os parâmetros do caminho não podem ser projetados realmente em um mapa. É tudo sobre a flexibilidade do Spring e seu desejo de acomodar qualquer capricho de desenvolvedores, na minha opinião.
Eu nunca usaria um mapa para parâmetros de caminho, mas pode ser bastante útil para parâmetros de consulta.
@RequestParam MultiValueMap<String, String>