Cómo crear la API con Cloud Endpoints Frameworks para Python

Una API es un servicio de llamada de procedimiento remoto (RPC) que proporciona métodos remotos accesibles para clientes externos. Cada API de backend consta de una clase de servicio de RPC que es una subclase de la clase ProtoRPC remote.Service y uno o más métodos. Cuando defines un método, también debes definir Messageclases para las solicitudes que ingresan en ese método y las respuestas que muestra. Una clase Message realiza una función de asignación para que los datos entrantes se puedan extraer y suministrar al método de servicio o a la respuesta saliente de forma correcta.

Si una solicitud tiene argumentos de ruta de acceso o string de consulta, usa una clase ResourceContainer para la asignación, en lugar de una clase simple Message.

Por último, debes decorar la clase de servicio de API y los métodos de clase y definir clases Message para las solicitudes y respuestas.

Crear la API

A continuación, se describe el procedimiento para decorar tu código a fin de crear una API implementada en una única clase. Si tienes una API multiclase, consulta Crear una API implementada con varias clases. Consulta Decoradores si deseas obtener más información sobre todos los decoradores disponibles.

Para crear una API:

  1. Agrega las siguientes importaciones obligatorias:

    import endpoints
    from endpoints import message_types
    from endpoints import messages
    from endpoints import remote
    
  2. Define una subclase de remote.Service y decórala con @endpoints.api:

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

    No es necesario que el nombre de tu API y el nombre de tu clase de servicio sean los mismos. El número de versión se aplica a la versión de la API. El valor que ingreses se vuelve parte de la ruta en la URL de tu API. Para obtener más información sobre las versiones, consulta Administrar versiones de API.

  3. Determina qué datos espera tu método de la solicitud y qué datos se mostrarán, y crea una clase Message para el cuerpo de la solicitud y el de la respuesta:

    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)
    )

    Ten en cuenta que si no aparecen argumentos en el cuerpo de la solicitud, como en una solicitud GET, puedes omitir la clase Message para la solicitud y usar el valor message_types.VoidMessage.

    Si tu solicitud tiene argumentos de ruta de acceso o string de consulta, reemplaza la clase Message por un ResourceContainer apropiado.

    Para obtener información completa sobre cómo formar y usar las clases Message, consulta la documentación de las clases Message de respuesta y solicitud de la RPC del protocolo de Google.

  4. Crea el método para tu API y decóralo con @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 tu solicitud tiene datos de ruta de acceso o de string de consulta, reemplaza el tipo de mensaje de solicitud por un ResourceContainer apropiado.

  5. Agrega el código para entregar la API, como se describe en Crear un servidor web.

¿Qué sigue?