4
respostas

Como implementar corretamente o consumo a uma API externa ?

Bom dia, estou focando em estudar Spring Boot, no entanto tenho uma dúvida. Qual o jeito correto de se usar implementação do RestTemplate ou WebClient no Spring Boot, senti falta de um tópico falando sobre isso nos cursos. Gostaria de entender melhor como implementar isso do jeito certo.

4 respostas

Oi Pedro,

Você pode criar uma classe Service para encapsular essa lógica de acesso à api externa.

Nela você pode instanciar a classe RestTemplate, para chamar a api externa, e para representar o retorno da api você deve criar um DTO, assim como é feito aqui no curso de Spring Boot.

Isso já basta para ter uma boa implementação de consumo de api externa.

Bons estudos!

Bom dia Rodrigo, estava lendo a documentação do RestTemplate e no caso eu também declaro a classe como um @RestController e um @RequestMapping para ser um endpoint ou o @Service já faz isso ?

observação: eu usei essa documentação aqui.

Oi Pedro,

Seria algo assim:

@RestController
@RequestMapping("/topicos")
public class TopicosController {

    @Autowired
    private ServicoExternoService service;

    @GetMapping
    public ResponseEntity exemplo(DadosForm form) {
        RetornoApiDTO retorno = service.chamarApiExterna(form);
        return ResponseEntity.ok(retorno);
    }
}
@Service
public  class ServicoExternoService {

    private static final String URI = "http://api.externa.com/servico";

    public RetornoApiDTO chamarApiExterna(DadosForm form) {
        RestTemplate rest = new RestTemplate();
        RetornoApiDTO retorno
  = rest.getForEntity(URI, RetornoApiDTO.class);

        return retorno;
    }
}
public class RetornoApiDTO {

    private String campo1;
    private String campo2;
    //getter e setters
}

O controller chama a classe service que encapsula a chamada a API externa utilizando o RestTemplate.

E os dados retornados pela API externa são representados pelo DTO RetornoApiDTO.

Show Rodrigo, faltou alguns detalhes e agora ficou bem mais claro. Estou precisando consumir uma API do Mercado Pago, onde um App vai enviar e receber informações deles. Qualquer dúvida volto aqui no fórum.