Créer un serveur Web

Vous devez définir un serveur Web utilisant l'API ou les API que vous avez créées. Cloud Endpoints Frameworks pour Python met en œuvre l'interface passerelle de serveur Web (WSGI) standard pour acheminer les requêtes envoyées à votre API vers les méthodes de votre code.

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 :

  1. 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.

  2. 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
    
    

    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 :

  1. Modifiez le décorateur :

    @endpoints.api(name='echo', version='v1', base_path='/api/')
    
  2. 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 :

import logging
logging.getLogger('endpoints').setLevel(logging.DEBUG)
logging.getLogger('endpoints_management').setLevel(logging.DEBUG)

La méthode setLevel définit le niveau de journalisation minimal pour l'enregistreur.