Estou com duvida no HTTP status. Sempre que o resultado da requisição for diferente de 200 o java irá tratar como HttpClientErrorException?
Nestes casos de exceções, como faço para capturar a mensagem que a api retorna?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Estou com duvida no HTTP status. Sempre que o resultado da requisição for diferente de 200 o java irá tratar como HttpClientErrorException?
Nestes casos de exceções, como faço para capturar a mensagem que a api retorna?
Não entendi muito sua dúvida Sylvio, você está consumindo um web service utilizando o Java ou está criando uma API?
Talvez um try/catch deve resolver seu problema.
Oi Matheus, Tenho um block try-catch para a chamada da API que vocês providenciaram para a aula.
try {
String url = "http://book-payment.herokuapp.com/payment";
String response = restTemplate.postForObject(url, new PaymentData(cart.getTotal()), String.class);
System.out.println("API response: " + response);
model.addFlashAttribute("success", response);
cart.clear();
} catch (HttpClientErrorException e) {
System.out.println("Request error: " + e.getMessage());
model.addFlashAttribute("fail", e.getMessage());
e.printStackTrace();
}
Entretanto, não consigo capturar a mensagem que a API retorna quando o código é diferente de 200.
No postman por exemplo, no status 400 a API de vocês retorna um texto "Valor maior que o permitido". Porem, o getMessage da exceção HttpClientErrorException não retorna esta mesma mensagem.
Quando o código não é 200, a resposta se não me engano vai estar no body da requisição, não sei como está a API, mas tente fazer esse teste.