Está a ver a documentação do Apigee e do Apigee Hybrid.
Ver documentação do
Apigee Edge.
SourceMessageNotAvailable
Código de erro
steps.extractvariables.SourceMessageNotAvailable
Corpo da resposta de erro
{
"fault": {
"faultstring": "[variable_name] message is not available for ExtractVariable: [policy_name]",
"detail": {
"errorcode": "steps.extractvariables.SourceMessageNotAvailable"
}
}
}
Causa
Este erro ocorre se a variável message especificada no elemento<Source> da política Extract Variables for:
- Fora do âmbito (não disponível no fluxo específico em que a política está a ser executada) ou
- não é possível resolver (não está definido)
Por exemplo, este erro ocorre se a política Extract Variables for executada no fluxo de pedidos, mas o elemento <Source> estiver definido para a variável response ou error, que não existe no fluxo de pedidos.
Diagnóstico
Identifique a política Extract Variables onde ocorreu o erro e o nome da variável que não está disponível. Pode encontrar ambos os itens no elemento
faultstringda resposta de erro. Por exemplo, na faultstring seguinte, o nome da política éExtractVariables-1e a variável éresponse:"faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"No XML da política de variáveis de extração com falha, verifique se o nome da variável definido no elemento corresponde ao nome da variável identificado na string de falha (passo n.º 1 acima). Por exemplo, a seguinte política Extract Variables especifica uma variável denominada
responseno elemento, que corresponde ao que está na string de falha:<ExtractVariables name="ExtractVariables-1"> <Source>response</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> </ExtractVariables>Determinar se a variável usada no elemento
<Source>está definida e disponível no fluxo no qual a política Extract Variables está a ser executada.Se a variável for:
- Fora do âmbito (não disponível no fluxo específico em que a política está a ser executada) ou
- não é possível resolver (não está definido)
Nesse caso, essa é a causa do erro.
Por exemplo, suponhamos que a política Extract Variables apresentada acima é executada no fluxo de pedido. Recorde que a variável
responseé usada no elemento<Source>da política Extrair variáveis. A variávelresponsesó está disponível no fluxo de respostas.Uma vez que a variável
responsenão existe no fluxo de pedidos, recebe o código de erro:steps.extractvariables.SourceMessageNotAvailable.
Resolução
Certifique-se de que a variável definida no elemento <Source> da política Extract Variables com falha está definida e existe no fluxo onde a política é executada.
Para corrigir a política Extract Variables de exemplo apresentada acima, pode modificar o elemento <Source> para usar a variável request tal como existe no fluxo de pedidos:
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>
SetVariableFailed
Código de erro
steps.extractvariables.SetVariableFailed
Corpo da resposta de erro
{
"fault": {
"faultstring": "Failed to set variable [variable_name] value [variable_value] from ExtractVariables: [policy_name]",
"detail": {
"errorcode": "steps.extractvariables.SetVariableFailed"
}
}
}
Causa
Este erro ocorre se a política Extract Variables não conseguir definir o valor para uma variável. Geralmente, isto acontece se tentar atribuir valores a várias variáveis cujos nomes começam pelas mesmas palavras num formato aninhado separado por pontos.
Por exemplo, suponhamos que cria/atribui um valor a uma variável var.color. Neste caso, color é atribuído como um nó de objeto. Se tentar atribuir um valor a outra variável var.color.next, a atribuição falha porque color já está alocada e não é permitido alocar outra variável à mesma.
Diagnóstico
Identifique a política Extract Variables onde ocorreu o erro e o nome da variável para a qual não foi possível definir o valor. Pode encontrar ambos os itens no elemento
faultstringda resposta de erro. Por exemplo, na seguinte string de falha, o nome da política éExtractColorse a variável évar.color.next:"faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"No XML da política Extract Variables com falha, verifique se o nome da variável corresponde ao nome da variável identificado na string de falha (passo n.º 1 acima). Por exemplo, a seguinte política tenta atribuir um valor de um parâmetro de consulta de pedido a uma variável denominada
var.color.next(o valor que aparece na string de falha):<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractColors"> <DisplayName>ExtractColors</DisplayName> <Source>request</Source> <QueryParam name="color"> <Pattern ignoreCase="true">{color}</Pattern> </QueryParam> <QueryParam name="nextcolor"> <Pattern ignoreCase="true">{color.next}</Pattern> </QueryParam> <VariablePrefix>var</VariablePrefix> </ExtractVariables>Examine todos os nomes de variáveis usados na política Extract Variables com falha. Se tiver atribuído um valor a outra variável cujo nome comece pelo mesmo nome que o nome da variável identificado na string de falha (passo n.º 1 acima), essa é a causa do erro.
No exemplo da política Extract Variables apresentado acima, repare que:
- O valor do parâmetro de consulta denominado
coloré primeiro atribuído a uma variávelvar.color(Nota:varé o prefixo de todas as variáveis, conforme definido no elemento<VariablePrefix>) - Na atribuição seguinte, o valor do parâmetro de consulta
nextcoloré atribuído a outra variávelvar.color.next. - Uma vez que o
var.colorjá está atribuído, a política Extract Variables não pode atribuir outra variável aninhadavar.color.next. Assim, recebe o código de erro:steps.extractvariables.SetVariableFailed
- O valor do parâmetro de consulta denominado
Resolução
Certifique-se de que não tem vários nomes de variáveis cujos nomes comecem pelas mesmas palavras aninhadas no formato separado por pontos.
Para corrigir a política Extract Variables apresentada acima, pode modificar o nome da variável var.color.next para usar o nome da variável var.nextcolor.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractColors">
<DisplayName>ExtractColors</DisplayName>
<Source>request</Source>
<QueryParam name="color">
<Pattern ignoreCase="true">{color}</Pattern>
</QueryParam>
<QueryParam name="nextcolor">
<Pattern ignoreCase="true">{nextcolor}</Pattern>
</QueryParam>
<VariablePrefix>var</VariablePrefix>
</ExtractVariables>
Mais informações
Para mais detalhes, consulte esta publicação da comunidade.
InvalidJSONPath
Código de erro
steps.extractvariables.InvalidJSONPath
Corpo da resposta de erro
{
"fault": {
"faultstring": "Invalid JSON path [path_name] in policy [policy_name].",
"detail": {
"errorcode": "steps.extractvariables.InvalidJSONPath"
}
}
}
Causa
Este erro ocorre se for usado um caminho JSON inválido no elemento <JSONPath> da política Extract Variables. Por exemplo, se um payload JSON não tiver o objeto Name, mas especificar Name como o caminho na política Extract Variables, ocorre este erro.
Diagnóstico
Identifique a política Extract Variables onde ocorreu o erro e o caminho JSON inválido. Pode encontrar ambos os itens no elemento
faultstringda resposta de erro. Por exemplo, na seguinte string de falha, o nome da política éExtractJSONVariablese o caminho JSON inválido é$.Name:"faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."No XML da política Extract Variables com falha, verifique se o caminho JSON definido no elemento
<JSONPath>corresponde ao caminho identificado na string de falha (passo n.º 1 acima). Por exemplo, a seguinte política Extract Variables especifica o caminho JSON$.Name, que corresponde ao que está na string de falha:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables"> <Source>response</Source> <JSONPayload> <Variable name="name" type="string"> <JSONPath>$.Name</JSONPath> </Variable> </JSONPayload> <VariablePrefix>employee</VariablePrefix> </ExtractVariables>Examine o elemento
<Source>e determine de que payload JSON está a tentar extrair a variável. Por exemplo, se o elemento<Source>estiver definido comorequest, a política está a extrair o payload JSON do objeto de pedido. Se estiver definido comoresponse, é o objeto de resposta.No exemplo da política Extract Variables apresentado acima, o elemento
<Source>está definido comoresponse, pelo que as variáveis estão a ser extraídas da carga útil JSON da resposta.<Source>response</Source>Examine o payload JSON adequado (determinado no passo n.º 3) e valide se tem o objeto especificado no elemento
<JSONPath>. Se o payload JSON não tiver esse objeto, essa é a causa do erro.Por exemplo, considere que está a tentar extrair variáveis do seguinte payload de resposta JSON:
{ "firstName":"John", "lastName":"Doe", "city":"San Jose", "state":"CA" }Uma vez que o payload da resposta JSON não tem o objeto
Name, a política Extract Variables falha com o erro que recebe o código de erro:steps.extractvariables.InvalidJSONPath.
Resolução
Certifique-se de que apenas os objetos que fazem parte do payload JSON do qual as variáveis estão a ser extraídas são especificados no elemento <JSONPath> da política Extract Variables.
Para corrigir a política Extract Variables de exemplo apresentada acima, pode modificar o elemento <JSONPath> para especificar um dos objetos disponíveis no payload de resposta JSON de exemplo (por exemplo, os objetos firstName e lastName são válidos):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractJSONVariables">
<Source>response</Source>
<JSONPayload>
<Variable name="name" type="string">
<JSONPath>$.firstName</JSONPath>
</Variable>
</JSONPayload>
<VariablePrefix>employee</VariablePrefix>
</ExtractVariables>
ExecutionFailed
Código de erro
steps.extractvariables.ExecutionFailed
Corpo da resposta de erro
{
"fault": {
"faultstring": "Failed to execute the ExtractVariables: [policy_name]",
"detail": {
"errorcode": "steps.extractvariables.ExecutionFailed"
}
}
}
Causas possíveis
As possíveis causas deste erro são:
| Causa | Descrição |
| Payload de entrada em falta | O payload de entrada (JSON, XML) está vazio. |
| Entrada inválida ou com formato incorreto | A entrada (JSON, XML, etc.) transmitida à política é inválida ou tem um formato incorreto. |
Causa: payload de entrada em falta
Este erro ocorre se a política Extract Variables (Extrair variáveis) se destinar a extrair as variáveis de um payload JSON ou XML, mas o conteúdo (payload) da variável especificada no elemento <Source> estiver vazio.
Por exemplo, se o elemento <Source> na política Extract Variables estiver definido como request ou response e se destinarem a conter uma carga útil JSON ou XML, mas a carga útil estiver vazia, ocorre o erro.
Diagnóstico
Identifique a política Extract Variables onde ocorreu o erro. Pode encontrar estas informações no elemento faultstring da resposta de erro. Por exemplo, na faultstring seguinte, o nome da política é
ExtractJSONVariables:"faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"Examine o elemento
<Source>no XML de variáveis de extração com falhas e determine o tipo de entrada a partir do qual as variáveis estão a ser extraídas. Por exemplo, a seguinte política Extract Variables tem o elemento<Source>definido comoresponsee está a extrair as variáveis do payload XML:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractXMLVariables" async="false" continueOnError="false" enabled="true"> <XMLPayload> <Namespaces/> <Variable name="City" type="string"> <XPath>/city</XPath> </Variable> </XMLPayload> <Source clearPayload="false">response</Source> </ExtractVariables>Verifica se a entrada que está a ser analisada pela política Extract Variables está vazia. Se a entrada estiver vazia, essa é a causa do erro.
No exemplo da política Extract Variables apresentado acima, a carga útil da resposta (ou seja, o corpo da resposta) enviada pelo servidor de back-end estava vazia.
Uma vez que a carga útil da resposta XML está vazia, recebe o código de erro:
steps.extractvariables.ExecutionFailedEste erro também pode ocorrer se o elemento
<Source>estiver definido comorequest, mas não for transmitido nenhum payload no pedido de proxy da API. Por exemplo:curl -v "http://$EXTERNAL_IP/v1/testevexecutionfailed" -H "Content-Type: application/xml"Em que
$EXTERNAL_IPé o endereço IP do balanceador de carga externo. Este endereço IP está exposto à Internet. Para mais informações, consulte o artigo Personalize o encaminhamento de acesso.A política Extract Variables só realiza a extração de XML quando o cabeçalho
Content-Typeda mensagem éapplication/xml,text/xmlouapplication/*+xml. Tem de transmitir o cabeçalho Content-Type comoapplication/xml,text/xmlouapplication/*+xmlse quiser que a política Extract Variables analise uma carga útil de pedido XML.
Resolução
Certifique-se de que a entrada transmitida à política Extract Variables é válida e não está vazia.
Para corrigir o problema com a política Extract Variables de exemplo apresentada acima, transmita uma carga útil XML válida. Por exemplo:
Crie um ficheiro denominado
city.xmlcom o seguinte conteúdo:<city>Bengaluru</city> <area>Sanjaynagar</area>Faça a chamada da API através de um comando cURL da seguinte forma:
curl -v "http://$EXTERNAL_IP/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xmlEm que
$EXTERNAL_IPé o endereço IP do balanceador de carga externo. Este endereço IP está exposto à Internet. Para mais informações, consulte o artigo Personalize o encaminhamento de acesso.
Causa: entrada inválida ou com formato incorreto
Se a política Extrair variáveis analisar uma entrada inválida ou com formato incorreto, recebe este erro.
Por exemplo, se o seguinte JSON inválido for fornecido como entrada para a política Extract Variables, recebe este erro.
[
"args": ["name" : "amar" ]
]
Diagnóstico
Identifique a política Extract Variables onde ocorreu o erro. Pode encontrar estas informações no elemento
faultstringda resposta de erro. Por exemplo, no seguintefaultstring, o nome da política éExtractJSONVariables:"faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"Examine o elemento
<Source>no XML de variáveis de extração com falhas e determine o tipo de entrada a partir do qual as variáveis estão a ser extraídas. Por exemplo, a seguinte política Extract Variables tem o elemento<Source>definido comorequeste está a extrair as variáveis do payload JSON:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="Name" type="string"> <JSONPath>$.args.name</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">request</Source> </ExtractVariables>Verifique se a entrada que está a ser analisada pela política Extract Variables é válida. Se a entrada for inválida ou tiver um formato incorreto, essa é a causa do erro.
No exemplo da política Extract Variables apresentado acima, o seguinte JSON inválido foi transmitido à política Extract Variables
[ "args": ["name" : "amar" ] ]Segue-se o exemplo de chamada da API que mostra como o pedido foi transmitido:
curl -v "http://<$EXTERNAL_IP/v1/testevexecutionfailed" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "amar" ]]'Em que
$EXTERNAL_IPé o endereço IP do balanceador de carga externo. Este endereço IP está exposto à Internet. Para mais informações, consulte o artigo Personalize o encaminhamento de acesso.O payload JSON transmitido à API é inválido, pois contém uma matriz com parênteses retos (
[ ]). Por isso, recebe o código de erro:steps.extractvariables.ExecutionFailedEste erro também pode ocorrer se o elemento
<Source>tiver sido definido comoresponse, mas a carga útil da resposta JSON for inválida ou tiver um formato incorreto.
Resolução
Certifique-se de que a entrada transmitida à política Extract Variables é válida e não tem um formato incorreto.
Para corrigir o problema com a política Extract Variables de exemplo abordada acima, transmita um pedido de payload JSON válido da seguinte forma:
{
"args":{
"name":"amar"
}
}
UnableToCast
Código de erro
steps.extractvariables.UnableToCast
Corpo da resposta de erro
{
"fault": {
"faultstring": "Unable to cast value [value] as [type].",
"detail": {
"errorcode": "steps.extractvariables.UnableToCast"
}
}
}
Causa
Este erro ocorre se a política Extract Variables não conseguir converter o valor extraído numa variável. Normalmente, isto acontece se tentar definir o valor de um tipo de dados para uma variável de outro tipo de dados.
Por exemplo, se a política de extração de variáveis tentar definir um valor que foi extraído de uma variável de string para uma variável de número inteiro, é apresentado este erro.
Diagnóstico
Identifique o tipo de dados da variável para a qual a política Extract Variables está a tentar fazer a conversão e falha. Pode encontrar estas informações no elemento
faultstringda resposta de erro. Por exemplo, no seguintefaultstring, o tipo de objeto éBOOLEAN:"faultstring":"Unable to cast value 36.231 as BOOLEAN."Identifique a política Extract Variables onde está a tentar definir o valor para uma variável do tipo determinado no passo n.º 1.
Por exemplo, a seguinte política Extract Variables extrai o valor de um
$.latitudeJSONPath para uma variável do tipoboolean, que corresponde ao que está na string de falha:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="latitude" type="boolean"> <JSONPath>$.latitude</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">response</Source> </ExtractVariables>Examine o tipo de dados do valor que está a ser extraído. Os dados podem estar no formato de cabeçalhos, caminhos de URI, payloads JSON/XML, parâmetros de formulário e parâmetros de consulta.
Verifique se o tipo de dados determinado no passo n.º 3 e o tipo de dados da variável à qual os dados estão a ser atribuídos (determinado no passo n.º 2) são iguais.
Se o tipo de dados das variáveis de origem e de destino não for o mesmo, essa é a causa do erro.
No exemplo da política Extract Variables apresentado acima, considere que a carga útil do pedido JSON é a seguinte:
{ "latitude":36.2312 }O tipo de dados do valor que está a ser extraído de
<JSONPath>,'$.latitude', é um número inteiro, que está a ser atribuído a uma variável do tipo de dados booleano.Uma vez que o tipo de dados do valor extraído e o tipo de dados da variável à qual o valor está a ser atribuído não são os mesmos, recebe o código de erro:
steps.extractvariables.UnableToCast.
Resolução
Certifique-se de que o tipo de dados do valor extraído e da variável à qual o conteúdo está a ser atribuído são do mesmo tipo.
Para corrigir o exemplo da política de variáveis de extração, tem de modificar o tipo da variável para Número inteiro:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true">
<JSONPayload>
<Variable name="latitude" type="integer">
<JSONPath>$.latitude</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">response</Source>
</ExtractVariables>
JsonPathParsingFailure
Código de erro
steps.extractvariables.JsonPathParsingFailure
Corpo da resposta de erro
{
"fault": {
"faultstring": "ExtractVariables [policy_name]: Json path parsing failed for for flow variables [variable_name]",
"detail": {
"errorcode": "steps.extractvariables.JsonPathParsingFailure"
}
}
}
Causa
Este erro ocorre quando a política Extract Variables não consegue analisar um caminho JSON e extrair dados da variável de fluxo especificada no elemento <Source>. Normalmente, isto acontece se a variável de fluxo especificada no elemento <Source> não existir no fluxo atual.
Por exemplo, este erro ocorre se a política Extract Variables for executada no fluxo de resposta e esperar analisar um caminho JSON, mas o elemento <Source> especificar a variável de fluxo request.content, que não existe no fluxo de resposta.
Diagnóstico
Identifique a política Extract Variables onde ocorreu o erro e o nome da variável de fluxo para a qual não foi possível extrair dados. Pode encontrar ambos os itens no elemento faultstring da resposta de erro. Por exemplo, na faultstring seguinte, o nome da política é
ExtractVariables-1e a variável érequest.content:"faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for for flow variables request.content"No XML da política Extract Variables com falha, verifique se o nome da variável definido no elemento
<Source>corresponde ao nome da variável identificado na string de falha (passo n.º 1 acima). Por exemplo, a seguinte política Extract Variables especifica uma variável denominadarequest.content, que corresponde ao que está em faultstring:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="Name" type="string"> <JSONPath>$.args.name</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">request.content</Source> </ExtractVariables>Valide se a variável de fluxo usada no elemento
<Source>está definida e disponível no fluxo no qual a política Extract Variables está a ser executada.Se a variável for:
- Fora do âmbito (não disponível no fluxo específico em que a política está a ser executada) ou
- não é possível resolver (não está definido)
Nesse caso, essa é a causa do erro.
Por exemplo, suponhamos que a política ExtractVariables apresentada acima deve ser executada no fluxo de resposta. Recorde que a variável de fluxo
request.contenté usada no elemento<Source>da política Extrair variáveis. A variável de fluxorequest.contentsó está disponível no fluxo de pedidos.Uma vez que a variável
responsenão existe no fluxo de pedidos, recebe o código de erro:steps.extractvariables.JsonPathParsingFailure.
Resolução
Certifique-se de que a variável de fluxo usada no elemento <Source> da política Extract Variables está disponível no fluxo no qual a política Extract Variables é executada.
Por exemplo, suponha que existe uma variável denominada response.content no fluxo de resposta e que, na verdade, contém o JSON que quer extrair. Para corrigir a política Extract
Variables apresentada acima, pode modificar o elemento <Source> da seguinte forma:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
<JSONPayload>
<Variable name="Name" type="string">
<JSONPath>$.args.name</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">response.content</Source>
</ExtractVariables>