Crear la API con Cloud Endpoints Frameworks para Python

Una API es un servicio de llamada a procedimiento remoto (RPC) que proporciona métodos remotos a los que pueden acceder clientes externos. Cada API de backend consta de una clase de servicio RPC que hereda de la clase ProtoRPC remote.Service y de uno o varios métodos. Cuando defines un método, también debes definir clases Message para las solicitudes que llegan a ese método y las respuestas que devuelve. Una clase Message realiza una función de asignación para que los datos entrantes se puedan extraer y proporcionar correctamente al método de servicio, o bien se puedan proporcionar correctamente a la respuesta saliente.

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

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

Crear la API

En el siguiente procedimiento se muestra cómo decorar el código para crear una API implementada en una sola clase. Si tienes una API de varias clases, consulta Crear una API implementada con varias clases. Consulta la sección Decoradores para obtener información detallada sobre todos los decoradores disponibles.

Para crear una API, sigue estos pasos:

  1. Añade 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):

    Ten en cuenta que el nombre de tu API y el nombre de tu clase de servicio no tienen por qué ser el mismo. El número de versión se aplica a la versión de la API. El valor que introduzcas formará parte de la ruta de la URL de tu API. Para obtener más información sobre las versiones, consulte Gestión de versiones de la API.

  3. Determina qué datos espera tu método de la solicitud y qué datos se devuelven, y crea una clase Message para el cuerpo de la solicitud y el cuerpo 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 aparece ningún argumento en el cuerpo de la solicitud, como en una solicitud GET , puedes omitir la clase Message de la solicitud y usar simplemente el valor message_types.VoidMessage.

    Si tu solicitud tiene argumentos de ruta o de cadena de consulta, sustituye tu clase Message por un ResourceContainer adecuado.

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

  4. Crea el método de 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 o de cadena de consulta, sustituye el tipo de mensaje de solicitud por un ResourceContainer adecuado.

  5. Añade el código para servir tu API, tal como se describe en el artículo sobre cómo crear un servidor web.

Siguientes pasos