Oi, boa noite! Geralmente isso pode ser feito via servidor web como o Apache, mas você pode fazer via código também(só não sei se isso ficaria dentro das boas práticas). É só você criar um novo método no controller que vai ter a url mais amigável e redirecionar ele para o método que tem a url mais complexa, exemplo:
@RestController
@RequestMapping("/abrigos")
public class AbrigoController {
@Autowired
private AbrigoService abrigoService;
@Autowired
private PetService petService;
@GetMapping("/listar/nomeextensomuitocomplicadonadaamigavel
public ResponseEntity<List<AbrigoDto>> listar() {
List<AbrigoDto> abrigos = abrigoService.listar();
return ResponseEntity.ok(abrigos);
}
.
.
.
.
.
@GetMapping("/listar")
public ResponseEntity<List<AbrigoDto>> listaComUrlAmigavel() {
return listar();
}
}
Aí lá no front você vai chamar o endpoint /abrigos/listar, e aí o método listaComUrlAmigavel() desse endpoint chamaria o método listar() do endpoint com nome /listar/nomeextensomuitocomplicadonadaamigavel.
sacou?
Mas será que não seria melhor eu refatorar o nome do método para um nome mais amigável ao invés de ter que escrever outro método que vai ter a função só de redirecionar? Minha intuição diz que isso cheira a bad smell. Na minha opinião, ou é melhor refatorar o nome da url pra um nome que sigam as boas práticas(artigo logo abaixo) do que ter que fazer o método listarComUrlAmigavel(). Ou então fazer isso via o servidor que está hospedando a aplicação.
Por último, ressalto este artigo que explica as boas práticas para nomear uma URI de acordo com padrão REST. Depois dá uma lida nele: https://medium.com/living-tech/boas-pr%C3%A1ticas-de-nomenclatura-para-rest-apis-9fc27e2c97d2