sexta-feira, 7 de outubro de 2016

REST - Como passar um parâmetro que contém ponto (.) pela Url com Spring Mvc



Esse post é curto, somente para dar uma dica de como fazer para que seu controller entenda um parâmetro que possui  (.) ponto e não quebre.

Alguns casos precisamos no get buscar algo que seja filtrado por determinado parâmetro, por exemplo quando buscamos um usuário, uma Url basicamente ficaria assim:

GET    "/user/{username}"

O problema é quando esse essa variável que é passada na uri possui um ponto, que ocasiona a quebra do valor. Ex

GET  "/user/tiago.ribeiro"

O spring entenderia que foi passado somente "tiago" descartando então tudo que vem após o (.).  Existem algumas estrategias para burlar isso, como colocar outro nome após o username do seu path,  por exemplo:

GET  "/user/{username}/search"

Assim ele não descartaria o que viesse após o ponto. Existe uma outra maneira e que na minha opinião é a mais elegante que seria a inserção de  (:.+) após a declaração do parâmetro. 

GET  "/user/{username:.+}"

Dessa maneira o Spring entenderá que o ponto faz parte do parâmetro passado e não quebrará.

Bem como falei esse post foi curto, espero que tenham gostado.


Um comentário: