Créer l'API à l'aide de Cloud Endpoints Frameworks pour Python

Une API est un service d'appel de procédure à distance (RPC, Remote Procedure Call) qui fournit des méthodes distantes accessibles depuis des clients externes. Chaque API backend se compose d'une classe de service RPC qui correspond à une sous-classe de la classe ProtoRPC remote.Service, ainsi que d'une ou de plusieurs méthodes. Lorsque vous définissez une méthode, vous devez également définir des classes Message pour les requêtes entrantes et les réponses renvoyées par la méthode. Une classe Message exécute une fonction de mappage permettant d'effectuer correctement, selon le cas, l'extraction des données entrantes et leur transmission à la méthode de service, ou la transmission des données à la réponse sortante.

Si une requête contient des arguments de chaîne de requête ou de chemin d'accès, vous devez effectuer le mappage à l'aide d'une classe ResourceContainer au lieu d'une simple classe Message.

Enfin, vous devez décorer la classe de service de l'API et les méthodes de la classe, puis définir les classes Message pour les requêtes et les réponses.

Créer l'API

La procédure suivante montre comment décorer le code pour créer une API implémentée dans une seule classe. Si vous disposez d'une API multiclasse, consultez la page Créer une API implémentée avec plusieurs classes. Consultez la page Décorateurs pour obtenir des informations détaillées sur l'ensemble des décorateurs disponibles.

Pour créer une API :

  1. Ajoutez les importations requises suivantes :

    import endpoints
    from endpoints import message_types
    from endpoints import messages
    from endpoints import remote
  2. Définissez une sous-classe de remote.Service, puis décorez-la avec @endpoints.api :

    @endpoints.api(name='echo', version='v1')
    class EchoApi(remote.Service):

    Notez que les noms de l'API et de la classe de service n'ont pas besoin d'être identiques. Le numéro de version s'applique à la version de l'API. La valeur que vous saisissez est incorporée dans le chemin spécifié dans l'URL de l'API. Pour en savoir plus sur les versions, consultez la page Gérer les versions d'une API.

  3. Déterminez les données que la méthode attend de la requête et celles qui seront renvoyées, puis créez une classe Message pour le corps de la requête et le corps de la réponse :

    class EchoRequest(messages.Message):
        message = messages.StringField(1)
    
    class EchoResponse(messages.Message):
        """A proto Message that contains a simple string field."""
        message = messages.StringField(1)
    
    ECHO_RESOURCE = endpoints.ResourceContainer(
        EchoRequest,
        n=messages.IntegerField(2, default=1))

    Notez que si aucun argument n'apparaît dans le corps de la requête, comme c'est par exemple le cas pour les requêtes GET, vous pouvez omettre la classe Message pour la requête et vous contenter d'utiliser la valeur message_types.VoidMessage.

    Si la requête contient des arguments de chaîne de requête ou de chemin d'accès, remplacez la classe Message par une classe ResourceContainer appropriée.

    Pour en savoir plus sur la création et l'utilisation de classes Message, consultez la documentation sur les classes Message de requête et de réponse Google Protocol RPC.

  4. Créez la méthode pour l'API, puis décorez-la avec @endpoints.method :

    @endpoints.method(
            # This method takes a ResourceContainer defined above.
            ECHO_RESOURCE,
            # This method returns an Echo message.
            EchoResponse,
            path='echo',
            http_method='POST',
            name='echo')
        def echo(self, request):

    Si la requête contient des données de chaîne de requête ou de chemin d'accès, remplacez le type de message de requête par une classe ResourceContainer appropriée.

  5. Ajoutez le code de diffusion de l'API, comme indiqué dans la page Créer un serveur Web.

Étape suivante