Comme pour toutes les applications exécutées sur App Engine, vous devez créer un fichier nommé app.yaml et y configurer les paramètres de votre application App Engine. Pour définir le serveur Web, vous devez modifier votre fichier app.yaml.
Pour définir un serveur Web, procédez comme suit :
Créez un module Python, par exemple main.py, puis créez un objet endpoints.api_server au niveau racine :
api=endpoints.api_server([EchoApi])
Le code api = endpoints.api_server([EchoApi]) crée une application WSGI qui achemine les requêtes API vers les méthodes de la classe EchoAPI.
Vous pouvez fournir une liste d'objets remote.Service (définis lors de la création de votre API) à endpoints.api_server. Si l'une de vos API est mise en œuvre dans plusieurs classes, votre objet remote.Service est un ensemble de classes, comme décrit sur la page Créer une API implémentée avec plusieurs classes.
Selon que vous avez créé une ou plusieurs API, vous devez créer ou non un module distinct pour l'objet endpoints.api_server.
Si vous avez créé plusieurs API (à l'aide de plusieurs sous-classes remote.Service) définies dans plusieurs fichiers, nous vous recommandons de créer un module distinct pour l'objet endpoints.api_server afin de pouvoir importer tous les fichiers de classes.
Si vous avez créé une seule API, vous pouvez ajouter le code endpoints.api_server requis au module dans lequel votre API est définie, car vous n'avez pas besoin d'importer d'autres classes.
Dans votre fichier app.yaml, mappez le serveur Web que vous venez de créer à l'emplacement de Cloud Endpoints, comme suit :
handlers:# The endpoints handler must be mapped to /_ah/api.-url:/_ah/api/.*script:main.api
où main correspond au module Python dans lequel vous avez défini l'objet endpoints.api_server.
Diffuser votre API depuis un autre chemin d'accès
(Facultatif) Pour diffuser votre API depuis un autre chemin d'accès, par exemple /api/, procédez comme suit :
Modifiez la section handlers du fichier app.yaml :
handlers:-url:/api/.*script:main.api
Effectuer la journalisation dans Endpoints Frameworks pour Python
Endpoints Frameworks pour Python utilise le module de journalisation Python standard pour consigner des informations sur le statut de l'application et le cycle de vie d'une requête. Pour en savoir plus sur les journaux App Engine et sur la façon de les afficher, consultez la rubrique Lire et écrire des journaux d'application dans la documentation d'App Engine.
Le module de journalisation Python fournit des niveaux de journalisation prédéfinis. Ces niveaux, classés par niveau croissant de gravité, sont les suivants :
Niveau de journalisation
Description
DEBUG
Fournit des journaux détaillés. En règle générale, vous ne devez définir ce niveau que lors de la résolution d'un problème.
INFO
Niveau de journalisation par défaut pour Endpoints Frameworks. Vous permet de suivre la progression de l'application à un niveau élevé.
WARNING
Vous avertit que quelque chose d'inattendu s'est produit, mais que l'application peut procéder à une récupération et continuer à s'exécuter normalement
ERROR
Vous avertit qu'une erreur s'est produite et risque d'entraîner un moins bon fonctionnement de l'application, qui reste toutefois en cours d'exécution
CRITICAL
Vous avertit d'une erreur ou d'un événement graves qui pourraient entraîner l'arrêt de l'application
Dans leur arborescence, les enregistreurs sont séparés par des points. Par exemple, l'enregistreur endpoints.api_config est un enfant de l'enregistreur endpoints. Cette hiérarchie vous permet de contrôler avec précision quels journaux sont émis ou supprimés. En règle générale, vous ne devez modifier que les deux enregistreurs racine pour Endpoints Framework : endpoints et endpoints_management.
Activer la journalisation DEBUG pour Endpoints Frameworks
Pour éviter de surcharger le lecteur de journaux, Endpoints Frameworks définit ses enregistreurs de manière à ne consigner que les entrées dont le niveau de journalisation est INFO ou plus grave. Vous pouvez modifier le niveau de journalisation à tout moment après l'importation d'Endpoints Frameworks dans votre module, comme suit :
La méthode setLevel définit le niveau de journalisation minimal pour l'enregistreur.
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\u003eA web server must be defined within the \u003ccode\u003eapp.yaml\u003c/code\u003e file to route requests to your API's methods using the Web Server Gateway Interface (WSGI).\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eendpoints.api_server\u003c/code\u003e object, created in a Python module like \u003ccode\u003emain.py\u003c/code\u003e, functions as a WSGI application that routes API requests, with the option to include multiple \u003ccode\u003eremote.Service\u003c/code\u003e objects if you have a multi-class API.\u003c/p\u003e\n"],["\u003cp\u003eIn the \u003ccode\u003eapp.yaml\u003c/code\u003e file, you must map the web server to the Cloud Endpoints location, by setting the url handler to \u003ccode\u003e/_ah/api/.*\u003c/code\u003e or a different path if configured, and link the script to the module where \u003ccode\u003eendpoints.api_server\u003c/code\u003e was defined.\u003c/p\u003e\n"],["\u003cp\u003eEndpoints Frameworks for Python employs the standard Python logging module, with levels ranging from \u003ccode\u003eDEBUG\u003c/code\u003e to \u003ccode\u003eCRITICAL\u003c/code\u003e, defaulting to \u003ccode\u003eINFO\u003c/code\u003e, and can be modified using the \u003ccode\u003esetLevel\u003c/code\u003e method for loggers like \u003ccode\u003eendpoints\u003c/code\u003e and \u003ccode\u003eendpoints_management\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# Creating a web server\n\nYou must define a web server that uses the\n[API or APIs you have created](/endpoints/docs/frameworks/python/create_api).\nCloud Endpoints Frameworks for Python implements the standard\n[Web Server Gateway Interface](https://wsgi.readthedocs.io/)\n(WSGI) to route requests to your API to the methods in your code.\n\nAs with every application that runs on App Engine, you must create a file\ncalled [`app.yaml`](/appengine/docs/standard/python/config/appref) in which you\nconfigure your App Engine app's settings. To define the web server,\nyou make changes to your `app.yaml` file.\n\nTo define a web server:\n\n1. Create a Python module, for example `main.py`, and create an\n `endpoints.api_server` object at the top-level:\n\n api = endpoints.api_server([EchoApi])\n\n The code `api = endpoints.api_server([EchoApi])` creates a WSGI application\n that routes API requests to the methods in the `EchoAPI` class.\n\n You can provide a list of `remote.Service` objects (which you defined when\n you [created your API](/endpoints/docs/frameworks/python/create_api)) to\n `endpoints.api_server`. If you have an API that is implemented in several\n classes, then your `remote.Service` object is a collection of classes as\n described in [Creating an API implemented with multiple\n classes](/endpoints/docs/frameworks/python/create-multi-class-api).\n\n Whether you create a separate module for the `endpoints.api_server` object\n depends on whether you created a single API or multiple APIs.\n - If you created multiple APIs (using multiple `remote.Service`\n subclasses) that are defined in multiple files, then we recommend that\n you create a separate module for the `endpoints.api_server` object so\n that you can import all the class files.\n\n - If you created a single API, you can add the required\n `endpoints.api_server` code to the module where you define your API\n because you don't need to import any other classes.\n\n | **Warning:** if your code doesn't call `endpoints.api_server`, you will get a deployment failure when you try to deploy.\n2. In your `app.yaml` file, map the web server you just created to\n the Cloud Endpoints location as follows:\n\n handlers:\n # The endpoints handler must be mapped to /_ah/api.\n - url: /_ah/api/.*\n script: main.api\n\n where `main` is the Python module you in which you defined the\n `endpoints.api_server` object.\n\nServing your API from a different path\n--------------------------------------\n\nOptional: To serve your API from a different path, for example `/api/`:\n\n1. Modify the decorator:\n\n @endpoints.api(name='echo', version='v1', base_path='/api/')\n\n2. Change the `handlers` section in the `app.yaml` file:\n\n handlers:\n - url: /api/.*\n script: main.api\n\nLogging in Endpoints Frameworks for Python\n------------------------------------------\n\nEndpoints Frameworks for Python uses the\n[standard Python logging module](https://docs.python.org/2/library/logging.html)\nto log information about\nthe application's status and request lifecycle. To learn more about\nApp Engine logs and how to view them, review\n[Reading and writing application logs](/appengine/docs/standard/python/logs#writing_application_logs)\nin the App Engine documentation.\n\nThe Python logging module provides predefined log levels. In increasing order\nof severity, the log levels are:\n\nLoggers exist in a dot-separated hierarchy. For example, the logger\n`endpoints.api_config` is a child of the logger `endpoints`. This hierarchy\ngives you precise control over which logs are emitted or suppressed. Typically,\nyou only change the two root loggers for Endpoints Frameworks:\n`endpoints` and `endpoints_management`.\n\n### Enable `DEBUG` logging for Endpoints Frameworks\n\nTo avoid overloading the log reader, Endpoints Frameworks sets its\nloggers to only record log entries with the `INFO` log level or higher. At any\ntime after Endpoints Frameworks has been imported into your module,\nyou can change the log level as follows: \n\n import logging\n logging.getLogger('endpoints').setLevel(logging.DEBUG)\n logging.getLogger('endpoints_management').setLevel(logging.DEBUG)\n\nThe `setLevel` method sets the minimum log level for the logger."]]