Отладка RestEasy RestClient - PullRequest
0 голосов
/ 04 мая 2020

Я использую каркас в quarkus для создания остального клиента для API мандрила

@RegisterRestClient
@Path("1.0")
@Produces("application/json")
@Consumes("application/json")
public interface MailService {
    @POST
    @Path("/messages/send-template.json")
    JsonObject ping(JsonObject mandrillInput);
}  

Это соответствующая часть моего application.properties

com.example.service.MailService/mp-rest/url=https:/mandrillapp.com/api

И мой пример ресурс

@Path("/hello")
public class ExampleResource {

    @Inject
    @RestClient
    MailService mailService;

    @Produces(MediaType.TEXT_PLAIN)
    @GET
    public String hello() {
        System.out.print("In the API");
        JsonObject key = Json.createObjectBuilder().add("key", "ABCD").build();
        System.out.println("The json built is "+key);
        JsonObject response = mailService.ping(key);
        System.out.println("The response is " + response);
        return "hello";
    }
}  

Что я видел, так это то, что если вызываемый API (в данном случае Mandrill) возвращает ответ об ошибке (например, если мой ключ неверен), то переменная, которую я использую для хранения ответ не получает ответ. Вместо этого REST API, который я раскрываю для своего приложения, оборачивается ответом Mandrill.
Это ожидаемое поведение? Как я могу отладить вывод клиентской реализации rest в Quarkus?

Полный проект здесь Вызываемый API REST здесь

1 Ответ

1 голос
/ 06 мая 2020

Если вы хотите иметь возможность получить тело ответа при возникновении ошибки, я предлагаю вам использовать javax.ws.rs.core.Response в качестве типа ответа.

Вы также можете go другой маршрут и обрабатывать исключения используя ExceptionMapper

...