Criar a API com os frameworks do Cloud Endpoints para Python

Uma API é um serviço de chamada de procedimento remoto (RPC) que fornece métodos remotos acessíveis a clientes externos. Cada API de back-end consiste numa classe de serviço RPC que é uma subclasse da classe ProtoRPC remote.Service e um ou mais métodos. Quando define um método, também tem de definir as classes Message para os pedidos que chegam a esse método e as respostas devolvidas por ele. Uma classe Message executa uma função de mapeamento para que os dados recebidos possam ser extraídos e fornecidos corretamente ao método de serviço ou fornecidos corretamente à resposta de saída.

Se um pedido tiver argumentos de caminho ou de string de consulta, usa uma classe ResourceContainer para o mapeamento, em vez de uma classe Message simples.

Por último, tem de decorar a classe do serviço da API e os métodos da classe, bem como definir classes Message para os pedidos e as respostas.

Criar a API

O procedimento seguinte mostra como decorar o seu código para criar uma API implementada numa única classe. Se tiver uma API de várias classes, consulte o artigo Criar uma API implementada com várias classes. Consulte a secção Decoradores para ver informações detalhadas sobre todos os decoradores disponíveis.

Para criar uma API:

  1. Adicione as seguintes importações necessárias:

    import endpoints
    from endpoints import message_types
    from endpoints import messages
    from endpoints import remote
  2. Defina uma subclasse de remote.Service e decore-a com @endpoints.api:

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

    Tenha em atenção que o nome da API e o nome da classe de serviço não têm de ser iguais. O número da versão aplica-se à versão da API. O valor que introduzir torna-se parte do caminho no URL para a sua API. Para mais informações sobre as versões, consulte o artigo Como lidar com o controlo de versões da API.

  3. Determine que dados o seu método espera do pedido e que dados são devolvidos e crie uma classe Message para o corpo do pedido e o corpo da resposta:

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

    Tenha em atenção que, se não aparecerem argumentos no corpo do pedido, como num pedido GET , pode omitir a classe Message para o pedido e usar simplesmente o valor message_types.VoidMessage.

    Se o seu pedido tiver argumentos de caminho ou de string de consulta, substitua a classe Message por um ResourceContainer adequado.

    Para obter informações completas sobre a formação e a utilização de classes Message, consulte a documentação das classes Message de resposta e pedido do Google Protocol RPC.

  4. Crie o método para a sua API e decore-o com @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):

    Se o seu pedido tiver dados de caminho ou string de consulta, substitua o tipo de mensagem do pedido por um ResourceContainer adequado.

  5. Adicione o código para publicar a sua API, conforme descrito em Criar um servidor Web.

O que se segue?