Résolution des erreurs de déploiement de la règle HTTPModifier
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Vous consultez la documentation d'Apigee X. Consultez la documentation d'Apigee Edge.
InvalidIndex
Message d'erreur
Le déploiement du proxy d'API par le biais de l'interface utilisateur ou l'API Apigee échoue avec le message d'erreur suivant :
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]
Si l'index spécifié dans les éléments <Copy> et/ou <Remove> de la règle HTTPModifier est 0 ou un nombre négatif, le déploiement du proxy d'API échoue.
Par exemple, si vous transmettez plusieurs paramètres de requête portant le même nom, vous pouvez y accéder en tant que variables de flux indexées. Si vous souhaitez transmettre les ID de trois élèves en tant que paramètres de requête, vous pouvez le faire comme suit :
Supposons ensuite que vous essayiez d'accéder à ces paramètres de requête avec les numéros d'index 0, 1 et 2 dans la règle HTTPModifier comme suit :
id.0
id.1 and
id.2
Dans ce cas, le déploiement du proxy échoue, car l'index doit commencer par 1. Cela signifie que vous pouvez accéder au premier paramètre de requête "id=1" en tant que "id.1". Pour accéder au deuxième paramètre de requête "id=2", vous devez utiliser l'index 2 i.e, "id.2". De même, pour accéder au troisième paramètre de requête "id=3", vous pouvez utiliser "id.3".
Identifiez la règle HTTPModifier où l'erreur s'est produite, le nom de l'attribut et l'index non valide. Vous trouverez tous ces éléments dans le message d'erreur. Par exemple, dans l'erreur suivante, le nom de la règle est GeneratingGeocodingRequest, le nom de l'attribut est id et l'index est 0 :
Vérifiez que le nom de l'attribut et l'index utilisés dans la fichier XML de la règle HTTPModifier défaillante correspondent au nom de l'attribut et à l'index identifiés dans le message d'erreur (étape 1 ci-dessus). Par exemple, la règle suivante spécifie l'attribut id et l'index en tant que 0, qui correspond au contenu du message d'erreur :
Si la valeur de l'index est de 0 ou est négatif, il s'agit de la cause de l'erreur.
Dans l'exemple de règle AssigneMessage présenté ci-dessus, vous essayez d'accéder à la première valeur du paramètre de requête "id" à l'aide de l'index 0. Par conséquent, le déploiement du proxy d'API échoue avec l'erreur suivante :
Dans la règle HTTPModifier, lorsque vous accédez à plusieurs en-têtes, paramètres de requête ou autres paramètres partageant le même nom, assurez-vous que l'index est toujours supérieur à zéro. Par exemple :
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[[["\u003cp\u003eAPI proxy deployment in Apigee X can fail with an "index must be greater than zero" error when using the HTTPModifier policy.\u003c/p\u003e\n"],["\u003cp\u003eThis error occurs if the \u003ccode\u003e<Copy>\u003c/code\u003e or \u003ccode\u003e<Remove>\u003c/code\u003e elements within the HTTPModifier policy attempt to access indexed flow variables with an index of 0 or a negative number.\u003c/p\u003e\n"],["\u003cp\u003eThe index in the HTTPModifier policy, when dealing with parameters that share the same name, must start at 1, not 0.\u003c/p\u003e\n"],["\u003cp\u003eTo resolve this, verify the index in the failing HTTPModifier policy, ensure that it is a positive number greater than zero, and adjust the index accordingly in the policy definition.\u003c/p\u003e\n"]]],[],null,["# HTTPModifier policy deployment error troubleshooting\n\n*You're viewing **Apigee X** documentation.\nView [Apigee Edge](https://docs.apigee.com/api-platform/troubleshoot/policies/deployment/assign-message-deployment-errors) documentation.*\n| Was this troubleshooting playbook helpful? Please let us know by clicking [Send Feedback]().\n\nInvalidIndex\n------------\n\n### Error message\n\nDeployment of the API proxy through either the Apigee UI or API fails with this error message: \n\n```\nError in deployment for environment [environment]\nThe revision is deployed, but traffic cannot flow.\nAssignMessage[policy_name]: index must be greater than zero in [attribute].[index]\n```\n\n**Example error message** \n\n Error in deployment for environment test.\n The revision is deployed, but traffic cannot flow.\n HTTPModifier[GenerateStudentsRequest]: index must be greater than zero in id.0\n\n### Cause\n\nIf the index specified in the `\u003cCopy\u003e` and/or `\u003cRemove\u003e` elements of the HTTPModifier policy is 0 or a negative number, then deployment of the API Proxy fails.\n\nFor example, if you pass multiple query parameters with the same name, you can access them as indexed flow variables. Let's say you want to pass the IDs of 3 students as query parameters, then you can do it as follows: \n\n https://$EXTERNAL_IP/$PROXY_BASEPATH?school_name=NPS&id=1&id=2&id=3\n\nThen, let's say you attempt to access these query parameters with index numbers 0, 1, and 2 in the HTTPModifier policy as follows: \n\n id.0\n id.1 and\n id.2\n\nIn this case, the deployment of the proxy fails because the index must start with 1. This means, you can access the first query parameter \"id=1\" as \"id.1\". To access the second query parameter \"id=2\", you need to use the index 2 i.e, \"id.2\". Similarly, to access the third query parameter \"id=3\", you can use \"id.3\".\n\nFor more information, see the [AssignMessage policy Copy element documentation](/apigee/docs/api-platform/reference/policies/assign-message-policy#copy).\n\n### Diagnosis\n\n1. Identify the HTTPModifier policy where the error occurred, the name of the attribute, and the invalid index. You can find all these items in the error message. For example, in the following error, the policy name is `GeneratingGeocodingRequest`, the name of the attribute is `id`, and the index is `0`:\n\n HTTPModifier[GenerateStudentsRequest]: index must be greater than zero in id.0\n\n2. Verify that the attribute name and the index used in the failed HTTPModifier policy XML matches the attribute name and the index identified in the error message (step #1 above). For example, the following policy specifies the attribute `id` and index as `0`, which matches what's in the error message:\n\n ```carbon\n \u003cAssignMessage name=\"GenerateStudentsRequest\"\u003e\n \u003cAssignTo createNew=\"true\" type=\"request\"\u003eStudentsInfoRequest\u003c/AssignTo\u003e\n \u003cCopy source=\"request\"\u003e\n \u003cQueryParams\u003e\n \u003cQueryParam name=\"school_name\"/\u003e\n \u003cQueryParam name=\"id.0\"/\u003e\n \u003cQueryParam name=\"id.1\"/\u003e\n \u003cQueryParam name=\"id.2\"/\u003e\n \u003c/QueryParams\u003e\n \u003c/Copy\u003e\n \u003c/AssignMessage\u003e\n ```\n3. If the index specified is 0 or negative number, then that's the cause of the error.\n\n In the example Assign Message policy shown above, you are trying to access the first value of the query parameter \"id\" using the index 0. Hence the deployment of the API Proxy fails with the error: \n\n AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0\n\n### Resolution\n\nIn HTTPModifier, when you access multiple headers, query parameters, or other parameters that share the same name, ensure that the index is always greater than zero. For example: \n\n \u003cAssignMessage name=\"GenerateStudentsRequest\"\u003e\n \u003cAssignTo createNew=\"true\" type=\"request\"\u003eStudentsInfoRequest\u003c/AssignTo\u003e\n \u003cCopy source=\"request\"\u003e\n \u003cQueryParams\u003e\n \u003cQueryParam name=\"school_name\"/\u003e\n \u003cQueryParam name=\"id.1\"/\u003e\n \u003cQueryParam name=\"id.2\"/\u003e\n \u003cQueryParam name=\"id.3\"/\u003e\n \u003c/QueryParams\u003e\n \u003c/Copy\u003e\n \u003c/AssignMessage\u003e"]]