XSLT
Este interceptor permite a execução de transformações nas requisições e respostas através de XSLT 2.0 (Extensible Stylesheet Language Transformations).
Funcionamento
O interceptor deve ser configurado com um script, que, por sua vez, será executado sobre o body da requisição.
O interceptor XSLT permite executar transformações somente sobre XML. Caso o body esteja no formato JSON, ele será convertido automaticamente para XML antes da execução do XSLT*.
Configurando o interceptor
Para configurar o interceptor, é necessário incluir o script a ser executado no campo Content.
É possível utilizar parâmetros do header, path ou query na execução do interceptor.
Para isso, utilize as variáveis $header.NOME_HEADER
, $queryParam.NOME_QUERY
and $pathParam.NOME_PATH
.
Você pode consultar um exemplo de script abaixo |
A opção Abort request if fail pode ser selecionada; ela aborta a requisição em caso de falha.
Exemplo de script
Abaixo temos um exemplo de transformação que monta um novo body na requisição, a partir de um valor de um JSON que foi enviado pelo cliente e um valor de cada tipo de parâmetro:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsx="http://www.webservicex.net"
exclude-result-prefixes="xs xsi xsl"
version="2.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="/" >
<soap:Envelope>
<soap:Header/>
<soap:Body>
<wsx:GetWeatherByPlaceName>
<wsx:ValorBody>
<xsl:value-of select="tool/name" />
</wsx:BodyValue>
<wsx:HeaderValue>
<xsl:value-of select="$header.content-type" />
</wsx:HeaderValue>
<wsx:QueryValue>
<xsl:value-of select="$queryParam.id" />
</wsx:QueryValue>
</wsx:GetWeatherByPlaceName>
</soap:Body>
</soap:Envelope>
</xsl:template>
</xsl:stylesheet>
Imaginando que o interceptor XSLT esteja configurado no fluxo, ele transformará o body da seguinte requisição:
POST /api?id=123
Header Content-Type:application/json
{
"tool": {
"name": "API Suite",
"since": "2012"
}
}
E este será o novo body criado:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsx="http://www.webservicex.net">
<soap:Header/>
<soap:Body>
<wsx:GetWeatherByPlaceName>
<wsx:ValorBody>API Suite</wsx:ValorBody>
<wsx:ValorHeader>application/json</wsx:ValorHeader>
<wsx:ValorQuery>123</wsx:ValorQuery>
</wsx:GetWeatherByPlaceName>
</soap:Body>
</soap:Envelope>
Share your suggestions with us!
Click here and then [+ Submit idea]