Интерфейс Grails с бэкэндом JAVA Springboot: вызов API выдает исключение RestClientException, в то время как бэкэнд API работает нормально - PullRequest
0 голосов
/ 19 ноября 2018

Это мой первый опыт работы с Grails.Кодовая база внешнего интерфейса, где выполняется вызов API -

try{
     def serviceResponse = restClient.post(
                    path: "/api/endpoint",
                    headers:['Authorization': "Bearer "+sCtx.accessToken]){

                        type "application/x-www-form-urlencoded"
                        charset "UTF-8"
                        urlenc 
      "interval":interval,"type":typeVal,"value":value,"count":count, "perTxnLimit":perTxnLimit 
                    }
  }catch (RESTClientException ex) {
        println 'exception resp '+ex?.response?.statusMessage
        println 'badResponse==' + ex?.response?.statusCode //404
        println 'response body==' + ex?.response?.contentAsString //or for raw bytes[] use ex.response.data
        def errJson = JSON.parse (ex?.response?.contentAsString )//or for raw bytes[] use ex.response.data
        true?.json

    }

Вывод вышеуказанного кода в консоль GGTS (Groovy / grails Tool Suite) -

exception resp OK
badResponse==200
response body==true

Понятия не имею, где и почему этоисключение наступает, даже если статус равен 200, что означает «ОК».Кроме того, внутренний API-интерфейс выполняет изменение БД, которое он должен делать.

Ответ из журналов внутреннего проекта Springboot (API отвечает логическим значением true) -

143 > POST http://backend/api/endpoint
143 > Accept: */*
143 > accept-encoding: gzip, deflate
143 > Authorization: Bearer <auth>
143 > Connection: close
143 > Content-Length: 53
143 > Content-Type: application/x-www-form-urlencoded
143 > Host: somedomain.com 
143 > Postman-Token: cc3dd170-3f6e-4c29-b734-15722e3035d5
143 > User-Agent: PostmanRuntime/7.4.0
143 > X-Forwarded-For: 115.112.95.170, 10.30.1.141
143 > X-Forwarded-Host: somedomain.com 
143 > X-Forwarded-Port: 443
143 > X-Forwarded-Proto: https
143 > X-Forwarded-Server: somedomain.com 


2018-11-25 12:41:52,407 12403930 [XNIO-3 task-3] INFO  [LoggingFilter.java:155] - 80 * Server responded with a response on thread XNIO-3 task-3
80 < 200
80 < Content-Type: application/json

Базовая кодовая база -

@Path("api/endpoint")
    @POST
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    @Produces(MediaType.APPLICATION_JSON)
    public boolean customerInducedLimit(@FormParam("type") String type, @FormParam("interval") String interval, @BeanParam CustomerInducedLimitReqDto dto,
            @Context SecurityContext security) {

        try{
            return inducedLimitService.createOrUpdateInducedLimit(uuid,type, interval, dto);
        } catch(InvalidInputException ex){
            logger.error("invalid parameters");
            return false;
        } catch(AccountNotFoundException ex){
            logger.error("Account not found exception");
            return false;
        } catch(Exception e){
            logger.error("Exception occured while processing customer induced limits");
            return false;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...