Stai visualizzando la documentazione di Apigee X.
Visualizza la documentazione di
Apigee Edge.
InvalidIndex
Messaggio di errore
Il deployment del proxy API tramite l'API o l'interfaccia utente di Apigee non va a buon fine con questo messaggio di errore:
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]
Esempio di messaggio di errore
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 l'indice specificato negli elementi <Copy>
e/o <Remove>
del criterio HTTPModifier è 0 o un numero negativo, il deployment del proxy API non va a buon fine.
Ad esempio, se passi più parametri di query con lo stesso nome, puoi accedervi come variabili di flusso indicizzate. Supponiamo che tu voglia passare gli ID di tre studenti come parametri di ricerca:
https://$EXTERNAL_IP/$PROXY_BASEPATH?school_name=NPS&id=1&id=2&id=3
Supponiamo che tu tenti di accedere a questi parametri di ricerca con i numeri di indice 0, 1 e 2 nel criterio HTTPModifier nel seguente modo:
id.0
id.1 and
id.2
In questo caso, il deployment del proxy ha esito negativo perché l'indice deve iniziare con 1. Ciò significa che puoi accedere al primo parametro di query "id=1" come "id.1". Per accedere al secondo parametro di query "id=2", devi utilizzare l'indice 2, ovvero "id.2". Analogamente, per accedere al terzo parametro di query "id=3", puoi utilizzare "id.3".
Per ulteriori informazioni, consulta la documentazione relativa all'elemento di copia del criterio AssignMessage.
Diagnosi
Identifica il criterio HTTPModifier in cui si è verificato l'errore, il nome dell'attributo e l'indice non valido. Puoi trovare tutti questi elementi nel messaggio di errore. Ad esempio, nel seguente errore il nome del criterio è
GeneratingGeocodingRequest
, il nome dell'attributo èid
e l'indice è0
:HTTPModifier[GenerateStudentsRequest]: index must be greater than zero in id.0
Verifica che il nome dell'attributo e l'indice utilizzati nel file XML del criterio HTTPModifier non riuscito corrispondano al nome dell'attributo e all'indice identificati nel messaggio di errore (passaggio 1 sopra). Ad esempio, il seguente criterio specifica l'attributo
id
e l'indice come0
, che corrisponde a quanto indicato nel messaggio di errore:<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 l'indice specificato è 0 o un numero negativo, ciò è la causa dell'errore.
Nell'esempio Assegna criterio di messaggistica mostrato sopra, stai tentando di accedere al primo valore del parametro di query "id" utilizzando l'indice 0. Di conseguenza, il deployment del proxy API non va a buon fine e viene restituito l'errore:
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Risoluzione
In HTTPModifier, quando accedi a più intestazioni, parametri di ricerca o altri parametri che condividono lo stesso nome, assicurati che l'indice sia sempre maggiore di zero. Ad esempio:
<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>