Está a ver a documentação do Apigee X.
Ver documentação do
Apigee Edge.
InvalidIndex
Mensagem de erro
A implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:
Error in deployment for environment [environment] The revision is deployed, but traffic cannot flow. AssignMessage[policy_name]: index must be greater than zero in [attribute].[index]
Mensagem de erro de exemplo
Error in deployment for environment test.
The revision is deployed, but traffic cannot flow.
HTTPModifier[GenerateStudentsRequest]: index must be greater than zero in id.0
Causa
Se o índice especificado nos elementos <Copy>
e/ou <Remove>
da política HTTPModifier for 0 ou um número negativo, a implementação do proxy de API falha.
Por exemplo, se transmitir vários parâmetros de consulta com o mesmo nome, pode aceder aos mesmos como variáveis de fluxo indexadas. Suponhamos que quer transmitir os IDs de 3 alunos como parâmetros de consulta. Pode fazê-lo da seguinte forma:
https://$EXTERNAL_IP/$PROXY_BASEPATH?school_name=NPS&id=1&id=2&id=3
Em seguida, suponhamos que tenta aceder a estes parâmetros de consulta com os números de índice 0, 1 e 2 na política HTTPModifier da seguinte forma:
id.0
id.1 and
id.2
Neste caso, a implementação do proxy falha porque o índice tem de começar por 1. Isto significa que pode aceder ao primeiro parâmetro de consulta "id=1" como "id.1". Para aceder ao segundo parâmetro de consulta "id=2", tem de usar o índice 2, ou seja, "id.2". Da mesma forma, para aceder ao terceiro parâmetro de consulta "id=3", pode usar "id.3".
Para mais informações, consulte a documentação do elemento de cópia da política AssignMessage.
Diagnóstico
Identifique a política HTTPModifier onde ocorreu o erro, o nome do atributo e o índice inválido. Pode encontrar todos estes itens na mensagem de erro. Por exemplo, no erro seguinte, o nome da política é
GeneratingGeocodingRequest
, o nome do atributo éid
e o índice é0
:HTTPModifier[GenerateStudentsRequest]: index must be greater than zero in id.0
Verifique se o nome do atributo e o índice usados no XML da política HTTPModifier com falha correspondem ao nome do atributo e ao índice identificados na mensagem de erro (passo n.º 1 acima). Por exemplo, a política seguinte especifica o atributo
id
e o índice como0
, o que corresponde ao que está na mensagem de erro:<AssignMessage name="GenerateStudentsRequest"> <AssignTo createNew="true" type="request">StudentsInfoRequest</AssignTo> <Copy source="request"> <QueryParams> <QueryParam name="school_name"/> <QueryParam name="id.0"/> <QueryParam name="id.1"/> <QueryParam name="id.2"/> </QueryParams> </Copy> </AssignMessage>
Se o índice especificado for 0 ou um número negativo, essa é a causa do erro.
No exemplo da política Assign Message apresentado acima, está a tentar aceder ao primeiro valor do parâmetro de consulta "id" através do índice 0. Por isso, a implementação do proxy de API falha com o erro:
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Resolução
No HTTPModifier, quando acede a vários cabeçalhos, parâmetros de consulta ou outros parâmetros que partilham o mesmo nome, certifique-se de que o índice é sempre superior a zero. Por exemplo:
<AssignMessage name="GenerateStudentsRequest">
<AssignTo createNew="true" type="request">StudentsInfoRequest</AssignTo>
<Copy source="request">
<QueryParams>
<QueryParam name="school_name"/>
<QueryParam name="id.1"/>
<QueryParam name="id.2"/>
<QueryParam name="id.3"/>
</QueryParams>
</Copy>
</AssignMessage>