Vous pouvez ajouter du code dans des langages procéduraux tels que JavaScript, Java et Python, puis appeler ce code depuis d'autres parties d'un proxy d'API. La compatibilité avec le code procédural est conçue pour faciliter la mise en œuvre de traitements complexes de variables de flux, de pannes et de corps de requêtes et de réponses.
Avec le code procédural, vous pouvez effectuer les actions suivantes :
Créer ou manipuler des valeurs de corps complexes, telles que des valeurs de requête et de réponse
Réécrire les URL, par exemple pour masquer l'URL d'un point de terminaison cible
Ajouter d'autres logiques qui ne sont pas disponibles avec les règles incluses
Fonctionnement
Vous utilisez une règle spécifique au langage pour pouvoir effectuer des appels depuis un flux de proxy vers le code inclus. Pour chacun des langages compatibles, Apigee inclut une règle distincte : une règle JavaScript, une règle JavaCallout et une règle PythonScript.
Ce qui suit décrit ce fonctionnement de manière générale. Pour en savoir plus, consultez les références concernant les règles.
Dans un fichier distinct, saisissez le code que vous allez utiliser.
Dans votre code, placez le résultat du traitement du code dans une variable de flux Apigee.
Vous allez récupérer la valeur de la variable à un autre endroit de votre proxy d'API. Pour en savoir plus sur les variables de flux, consultez la page Gérer l'état du proxy avec des variables de flux.
Ajoutez votre fichier (ou JAR) en tant que fichier de ressources au proxy d'API.
Pour en savoir plus sur les fichiers de ressources, consultez la page Fichiers de ressources.
Ajoutez la règle correspondant au langage que vous utilisez.
Configurez la règle pour appeler votre code à partir de l'emplacement souhaité dans le flux de votre proxy d'API.
Utilisez une règle pour récupérer la valeur du code à partir de la variable de flux.
Limites
Le modèle de sécurité Apigee n'autorise pas les appels système tels que les E/S réseau, les lectures/écritures de système de fichiers, les informations utilisateur actuelles, la liste des processus et l'utilisation du processeur/de la mémoire. Bien que certains de ces appels puissent être fonctionnels, ils ne sont pas acceptés et sont susceptibles d'être désactivés à tout moment. Pour assurer la compatibilité ascendante, vous devez éviter d'effectuer de tels appels dans votre code.
D'autres limites peuvent exister pour chaque langage accepté, comme décrit dans la documentation de référence correspondant au langage.
Langages acceptés
JavaScript
La compatibilité avec JavaScript inclut un modèle d'objet complet permettant de gérer les variables et les valeurs spécifiques à un proxy d'API. Pour en savoir plus, consultez la page Modèle d'objet JavaScript.
Pour obtenir des informations de référence sur les règles et des exemples, consultez la page Règle JavaScript.
Java
Utilisez la règle JavaCallout pour appeler du code Java à partir du flux de votre proxy. La documentation de référence sur les règles inclut des exemples.
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/05 (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/05 (UTC)."],[[["\u003cp\u003eThis content covers how to use procedural code (JavaScript, Java, and Python) within Apigee and Apigee hybrid API proxies to manage flow variables, faults, and request/response bodies.\u003c/p\u003e\n"],["\u003cp\u003eApigee provides specific policies (JavaScript, JavaCallout, and PythonScript) to call out to your procedural code, which can be used to implement complex logic or rewrite URLs.\u003c/p\u003e\n"],["\u003cp\u003eProcedural code allows for the manipulation of complex body values, and logic not available through built-in policies, with results stored in flow variables for retrieval elsewhere in the API proxy.\u003c/p\u003e\n"],["\u003cp\u003eTo use procedural code, you write the code in a separate file, add it as a resource file to your API proxy, configure the relevant language policy to call the code, and retrieve the results using flow variables.\u003c/p\u003e\n"],["\u003cp\u003eThe security model in Apigee restricts certain system calls in procedural code, such as network I/O and file system operations, which should be avoided for forward compatibility.\u003c/p\u003e\n"]]],[],null,["# Incorporating procedural code\n\n*This page\napplies to **Apigee** and **Apigee hybrid**.*\n\n\n*View [Apigee Edge](https://docs.apigee.com/api-platform/get-started/what-apigee-edge) documentation.*\n\nYou can add code in procedural languages such as JavaScript, Java, and Python, then call out\nto that code from other parts of an API proxy. Support for procedural code is designed to make it\neasier for you to implement complex handling of flow variables, faults, and request and response\nbodies.\n\nWith procedural code, you can:\n\n- Create or manipulate complex body values, such as request and response values.\n- Rewrite URLs, such as to mask a target endpoint URL.\n- Add other logic not available with included policies.\n\nHow it works\n------------\n\nYou use a policy specific to the language in order to make calls from a proxy flow to your\nincluded code. For each of the supported languages, Apigee includes a separate policy:\n[JavaScript policy](/apigee/docs/api-platform/reference/policies/javascript-policy), [JavaCallout policy](/apigee/docs/api-platform/reference/policies/java-callout-policy), and [PythonScript policy](/apigee/docs/api-platform/reference/policies/python-script-policy).\n\nThe following describes, at a high level, one way this works. Be sure to see the policy\nreferences for more details.\n\n1. In a separate file, write the code you're going to use.\n2. In your code, put the result of the code's processing into an Apigee flow variable. You'll retrieve the variable value elsewhere in your API proxy. For more about flow\n variables, see [Managing\n proxy state with flow variables](/apigee/docs/api-platform/fundamentals/introduction-flow-variables).\n\n3. Add your file (or JAR) as a resource file to your API proxy. For more about resource files, see [Resource files](/apigee/docs/api-platform/develop/resource-files).\n\n4. Add the policy corresponding to the language you're using. Configure the policy to make a call to your code from the desired place in your API\n proxy's flow.\n\n5. Use a policy to retrieve the code's value from the flow variable.\n\nLimitations\n-----------\n\nThe Apigee security model does not permit system calls such as network I/O, filesystem\nread/writes, current user info, process list, and CPU/memory utilization. Although some such\ncalls may be functional, they are unsupported and liable to be actively disabled at any time. For\nforward compatibility, you should avoid making such calls in your code.\n\nOther limitations may exist for each supported language, as described in the language's\ncorresponding policy reference.\n\nSupported languages\n-------------------\n\n### JavaScript\n\nSupport for JavaScript includes a full object model for handling variables and values specific\nto an API proxy. For more, see [JavaScript object model](/apigee/docs/api-platform/reference/javascript-object-model).\n\nFor policy reference information and examples, see [JavaScript policy](/apigee/docs/api-platform/reference/policies/javascript-policy).\n\n### Java\n\nUse the [JavaCallout\npolicy](/apigee/docs/api-platform/reference/policies/java-callout-policy) to make calls to Java code from your proxy's flow. The policy reference topic includes\nexamples.\n\n### Python\n\nUse the [Python Script\npolicy](/apigee/docs/api-platform/reference/policies/python-script-policy) to call out to Python code."]]