Manipulando Xml Pelo Custom Interceptor Js

Temos uma situação simples porem frequente nos fluxos entre APIS e Backend, onde é preciso realizar manipulações de XML para compor uma melhor resposta a partir das informação extraídas.

Uma forma prática de manipular e compor estes resultados é através do custom interceptor java script, para isso temos um exemplo prático. Temos um XML que queremos manipular e extrair informações, a partir de um trecho de código realizamos o parse do XML e consultamos o valor especifico responseCode .

 

XML

No nosso XML, retornado por um Backend SOAP, temos algumas informações que queremos utilizar.


<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Server validation error</faultstring>
<detail>
<ns2:WsError xmlns:ns2="http://all.wsdl.cms.com/">
<faults>
<responseCode>-2</responseCode>
<responseDesc>notificationId: Id Aviso de viagem inválido</responseDesc>
</faults>
</ns2:WsError>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>

 

JS

No Java Script abaixo, dentro de um custom interceptor, iremos manipular o XML e consumir o responseCode.


try {
   // Recupera o body de response( XML do exemplo).
   var body = $response.getBody().getString('utf-8');
   // Procurando por elementos no Document utilizando xpath. responseCode
   var responseCode = $jdom.findElements($jdom.parse(body), "//*[local-name()='responseCode']");
   // Se encontrou, vamos pegar o valor do elements na posição 0.
   var body = responseCode.get(0).getValue();

   //monta o response
   $call.decision.setAccept(false); 
   $call.stopFlow = true;
   $call.response = new com.sensedia.apigateway.services.ApiResponse();
   $call.response.setStatus(200);
   $call.response.setHeader("Content-type", "text/plain");
   $call.response.getBody().setString(body, "utf-8");

} catch (e) {
   $call.tracer.trace(e);
   throw e;
}

 

Este é um exemplo de uma das formas que podemos realizar a manipulação dos dados. Tendo por base estes comando basta adaptarmos o script para o cenário que atenda as mais variadas situações e assim compor a resposta ideal.

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

Comentários

Powered by Zendesk