Solução de problemas de implantação de política HTTPModifier

Você está visualizando a documentação do Apigee X.
Veja a documentação do Apigee Edge .

Índice inválido

Mensagem de erro

A implantação do proxy da API por meio da interface do usuário ou da API do 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]

Exemplo de mensagem de erro

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 implantação do Proxy de API falhará.

Por exemplo, se você passar vários parâmetros de consulta com o mesmo nome, poderá acessá-los como variáveis ​​de fluxo indexadas. Digamos que você queira passar os IDs de 3 alunos como parâmetros de consulta. Você pode fazer isso da seguinte maneira:

https://$EXTERNAL_IP/$PROXY_BASEPATH?school_name=NPS&id=1&id=2&id=3

Então, digamos que você tente acessar esses parâmetros de consulta com números de índice 0, 1 e 2 na política HTTPModifier da seguinte maneira:

id.0
id.1 and
id.2

Nesse caso, a implantação do proxy falha porque o índice deve começar com 1. Isso significa que você pode acessar o primeiro parâmetro de consulta "id=1" como "id.1". Para acessar o segundo parâmetro de consulta "id=2", você precisa usar o índice 2, ou seja, "id.2". Da mesma forma, para acessar o terceiro parâmetro de consulta "id=3", você pode usar "id.3".

Para obter mais informações, consulte a documentação do elemento Copiar da política AssignMessage .

Diagnóstico

  1. Identifique a política HTTPModifier onde o erro ocorreu, o nome do atributo e o índice inválido. Você pode encontrar todos esses itens na mensagem de erro. Por exemplo, no erro a seguir, 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
    
  2. 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 (etapa 1 acima). Por exemplo, a política a seguir especifica o id e o índice do atributo como 0 , 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>
  3. Se o índice especificado for 0 ou um número negativo, essa é a causa do erro.

    No exemplo de política de Atribuição de Mensagem mostrado acima, você está tentando acessar o primeiro valor do parâmetro de consulta "id" usando o índice 0. Portanto, a implantação do Proxy de API falha com o erro:

    AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
    

Resolução

No HTTPModifier, ao acessar vários cabeçalhos, parâmetros de consulta ou outros parâmetros que compartilham o mesmo nome, certifique-se de que o índice seja sempre maior que 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>