2
respostas

[Dúvida] Duvida no spring boot usando java

@GetMapping(value = {"/teste/descricao/{dsEpta}/fantasia/{nmFantasia}, produces = "application/json") @ApiOperation(value = "Obter descricao ou por nome fantasia fornecedor.", notes = "Obter operador por descrição ou nome fantasia.") public ResponseEntity<?> obterOperadorTestePorDescricaoEptaNomeFantasia(@PathVariable(required = false, value = "dsEpta") String dsEpta, @PathVariable( required = false, value = "nmFantasia") String nmFantasia ) {

Boa tarde, gostaria de saber como faço, pra fazer um endpoint ora passando os dois parâmetros preenchidos e ora passando somente um preenchido.

Já fiz usando mais de endereço no getmapping, funcionou, mas quanto mais parâmetros mais endereço no getmapping terei, isso torno o serviço muito braçal.

Quando eu faço o teste tanto no swagger quanto no postman, o required = false não funcional. Fica esperando você preencher os valor dos dois parâmetros, não permitindo deixar um parâmetro vazio. Essa e minha duvida...

2 respostas

?????????

Olá André, tudo bem?

No caso do Spring Boot, para criar um endpoint que aceite tanto os dois parâmetros preenchidos quanto apenas um deles, você pode utilizar a anotação @RequestParam em vez de @PathVariable. A anotação @RequestParam permite que você especifique os parâmetros como opcionais.

Por exemplo, você pode modificar o seu código da seguinte forma:

@GetMapping(value = "/teste/descricao/fantasia", produces = "application/json")
@ApiOperation(value = "Obter descrição ou por nome fantasia fornecedor.", notes = "Obter operador por descrição ou nome fantasia.")
public ResponseEntity<?> obterOperadorTestePorDescricaoEptaNomeFantasia(@RequestParam(required = false, value = "dsEpta") String dsEpta, @RequestParam(required = false, value = "nmFantasia") String nmFantasia) {
    // Seu código aqui
}

Dessa forma, você pode passar os parâmetros dsEpta e nmFantasia tanto na URL quanto como query parameters. Por exemplo:

  • /teste/descricao/fantasia?dsEpta=valor1&nmFantasia=valor2
  • /teste/descricao/fantasia?dsEpta=valor1
  • /teste/descricao/fantasia?nmFantasia=valor2

Assim, você poderá deixar um dos parâmetros vazio, caso necessário.

Espero ter ajudado e bons estudos!