Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
InvalidIndex
Mensaje de error
La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:
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]
Ejemplo de mensaje de error
Error in deployment for environment test.
The revision is deployed, but traffic cannot flow.
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Captura de pantalla de ejemplo
Causa
Si el índice especificado en los elementos <Copy>
o <Remove>
de la política Assign Message es 0 o un número negativo, se producirá un error al implementar el proxy de API.
Por ejemplo, si envía varios parámetros de consulta con el mismo nombre, puede acceder a ellos como variables de flujo indexadas. Supongamos que quiere transferir los IDs de tres alumnos como parámetros de consulta. Puede hacerlo de la siguiente manera:
https://$EXTERNAL_IP/$PROXY_BASEPATH?school_name=NPS&id=1&id=2&id=3
Supongamos que intentas acceder a estos parámetros de consulta con los números de índice 0, 1 y 2 en la política Asignar mensaje de la siguiente manera:
id.0
id.1 and
id.2
En este caso, la implementación del proxy falla porque el índice debe empezar por 1. Esto significa que puede acceder al primer parámetro de consulta "id=1" como "id.1". Para acceder al segundo parámetro de consulta "id=2", debes usar el índice 2, es decir, "id.2". Del mismo modo, para acceder al tercer parámetro de consulta "id=3", puede usar "id.3".
Para obtener más información, consulta la documentación del elemento Copy de la política AssignMessage.
Diagnóstico
Identifica la política Asignar mensaje en la que se ha producido el error, el nombre del atributo y el índice no válido. Puedes encontrar todos estos elementos en el mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política es
GeneratingGeocodingRequest
, el nombre del atributo esid
y el índice es0
:AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Verifica que el nombre del atributo y el índice utilizados en el XML de la política de asignación de mensajes fallida coincidan con el nombre del atributo y el índice identificados en el mensaje de error (paso 1 anterior). Por ejemplo, la siguiente política especifica el atributo
id
y el índice como0
, que coincide con lo que aparece en el mensaje de error:<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>
Si el índice especificado es 0 o un número negativo, esa es la causa del error.
En el ejemplo de política Asignar mensaje que se muestra arriba, se intenta acceder al primer valor del parámetro de consulta "id" mediante el índice 0. Por lo tanto, el despliegue del proxy de API falla y se produce el siguiente error:
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Resolución
En Asignar mensaje, cuando acceda a varios encabezados, parámetros de consulta u otros parámetros que compartan el mismo nombre, asegúrese de que el índice sea siempre mayor que cero. Por ejemplo:
<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>
InvalidVariableName
Mensaje de error
La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:
Error Saving Revision [revision_number] The revision is deployed, but traffic cannot flow. AssignMessage schema validation failed: invalid variable name - null - in assign variable.
Ejemplo de mensaje de error
Error Saving Revision 3
AssignMessage schema validation failed: invalid variable name - null - in assign variable.
Captura de pantalla de ejemplo
Causa
Si el elemento secundario <Name>
está vacío o no se especifica en el elemento <AssignVariable>
, la implementación del proxy de API falla porque no hay ningún nombre de variable válido al que asignar un valor. Es obligatorio indicar un nombre de variable válido.
Diagnóstico
Examina todas las políticas de asignación de mensajes del proxy de API específico en el que se ha producido el error. Si hay alguna política de asignación de mensajes en la que el elemento secundario <Name>
esté vacío o no se haya especificado en el elemento <AssignVariable>
, esa será la causa del error.
Ejemplo 1: La siguiente política Asignar mensaje no tiene definido ningún elemento <Name>
.
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
<DisplayName>Assign Message-1</DisplayName>
<Properties/>
<AssignVariable>
<Value>abcd1234</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo>
</AssignMessage>
Ejemplo 2: La siguiente política de asignación de mensajes tiene un elemento <Name>
vacío .
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
<DisplayName>Assign Message-1</DisplayName>
<Properties/>
<AssignVariable>
<Name></Name>
<Value>abcd1234</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo>
</AssignMessage>
Resolución
Asegúrate de que el elemento secundario <Name>
siempre se especifique y no esté vacío en el elemento <AssignVariable>
de la política Asignar mensaje. Por ejemplo:
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1"> <DisplayName>Assign Message-1</DisplayName> <Properties/> <AssignVariable> <Name>appSecret</Name> <Value>abcd1234</Value> </AssignVariable> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo> </AssignMessage>