Chamada HTTP via Custom Interceptor JS

Podemos ter em algum momento a necessidade de consumir um serviço rest dentro de um fluxo de uma API para obter informações adicionais que serão utilizados na chamada. 

Com esta necessidade podemos construir um interceptor JavaScript que irá utilizar a classe $http para realizar uma chamada rest para o serviço. 

Abaixo temos um exemplo de chamada sendo realizada e utilizando um header passado na chamada original.

 

try {

    //Url do serviço da chamada

    var url = 'https://suaurl.com';

 

    //header que vem da chamada original do fluxo que sera repassado para o serviço interno

    var headerRequest = $call.request.getHeader("headerRequest");

    //exemplo de post com body -> var chamada_manager = $http.post(url, header, body);

 

    //header que será enviado para o serviço consumido

    var header = {

        "Content-Type": "application/json",

        "Teste-Header": "Hteste",

        "headerRequest": headerRequest

    };

 

    //executado a chamada para o endereço cadastrado e o retorno armazenado na variável chamada

    var chamada = $http.get(url, header);

    //exibindo no trace (debug) o retorno da chamada para o serviço

    $console.debug("Resposta da chamada: ", chamada);

 

    //finaliza o código de exemplo terminando a chamada

    $call.decision.setAccept(false);

    $call.stopFlow = true;

    $call.response = new com.sensedia.apigateway.services.ApiResponse();

    $call.response.setStatus(200);

    $call.response.setHeader("Content-type", "application/json");

    $call.response.getBody().setString($json.stringify(chamada), "utf-8");

} catch (e) {

    $call.stopFlow = true;

    $call.response = new com.sensedia.apigateway.services.ApiResponse();

    $call.response.setStatus(500);

    $call.response.setHeader("Content-type", "plain/text");

    $call.response.getBody().setString(e.toString(), "utf-8");

}

 

Com o exemplo acima aplicado no cenário em especifico que está desenvolvendo basta manipular o retorno que se encontra na variável "chamada" e aplicar no fluxo conforme sua necessidade.

Tem mais dúvidas? Envie uma solicitação

Comentários

Powered by Zendesk