Crear la API usando Cloud Endpoints Frameworks para Python

Una API es un servicio de llamada a procedimiento remoto (RPC) que proporciona métodos remotos accesibles para clientes externos. Cada API backend consta de una clase de servicio RPC que subclasifica la clase ProtoRPC remote.Service y uno o más métodos. Cuando define un método, también debe 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 mapeo para que los datos entrantes puedan extraerse y suministrarse al método de servicio correctamente, o suministrarse correctamente a la respuesta saliente.

Si una solicitud tiene argumentos de ruta o cadena de consulta, se utiliza una clase ResourceContainer para el mapeo, en lugar de una simple clase Message .

Finalmente, debe decorar la clase de servicio API y los métodos de clase, y debe definir clases Message para las solicitudes y respuestas.

Creando la API

El siguiente procedimiento muestra cómo decorar su código para crear una API implementada en una sola clase. Si tiene una API de varias clases, consulte Creación de una API implementada con varias clases . Consulte Decoradores para obtener información detallada sobre todos los decoradores disponibles.

Para crear una API:

  1. Agregue las siguientes importaciones requeridas:

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

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

    Tenga en cuenta que no es necesario que el nombre de su API y el nombre de su clase de servicio sean iguales. El número de versión se aplica a la versión de la API. El valor que ingresa se convierte en parte de la ruta en la URL a su API. Para obtener más información sobre las versiones, consulte Manejo del control de versiones de API .

  3. Determine qué datos espera su método de la solicitud y qué datos se devuelven, y cree 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)
    )

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

    Si su solicitud tiene argumentos de ruta o cadena de consulta, reemplace su clase Message con un ResourceContainer apropiado.

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

  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 su solicitud tiene datos de ruta o cadena de consulta, reemplace el tipo de mensaje de solicitud con un ResourceContainer apropiado.

  5. Agregue el código para servir su API, como se describe en Creación de un servidor web .

¿Qué sigue?