Como criar a API usando o Cloud Endpoints Frameworks para Python

Uma API é um serviço de chamada de procedimento remoto (RPC, na sigla em inglês) que fornece métodos remotos acessíveis a clientes externos. Cada API de back-end consiste em uma classe de serviço RPC que apresenta subclasses para a classe ProtoRPC remote.Service e um ou mais métodos. Para definir um método, é preciso configurar também classes Message nas solicitações que chegam e nas respostas retornadas por ele. Uma classe Message executa uma função de mapeamento para que os dados recebidos sejam extraídos e fornecidos corretamente ao método do serviço ou à resposta de saída.

Se uma solicitação tiver argumentos de string de consulta ou de caminho, use uma classe ResourceContainer no mapeamento, em vez de uma classe Message simples.

Por último, decore a classe do serviço da API e os métodos de classe, além de definir classes Message nas solicitações e respostas.

Como criar a API

No procedimento a seguir, você vê como decorar o código para criar uma API implementada em uma única classe. Se você tiver uma API multiclasse, consulte Como criar uma API implementada com várias classes. Consulte Decoradores para informações detalhadas sobre todos os decoradores disponíveis.

Para criar uma API:

  1. Adicione as seguintes importações obrigató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):

    O nome da API e da classe de serviço não precisam ser iguais. O número da versão aplica-se à versão da API. O valor inserido torna-se parte do caminho no URL para a API. Para mais informações sobre as versões, consulte Como gerenciar o controle de versões da API.

  3. Determine os dados que o método espera da solicitação e os que serão retornados. Depois, crie uma classe Message para o corpo da solicitação e 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)
    )

    Se nenhum argumento aparecer no corpo da solicitação como, por exemplo, em uma solicitação GET, será possível omitir a classe Message e simplesmente usar o valor message_types.VoidMessage.

    Se a solicitação tiver argumentos de string de consulta ou de caminho, substitua a classe Message com um ResourceContainer apropriado.

    Para informações completas sobre como formar e usar classes Message, consulte a documentação sobre classes Message de solicitação e resposta de RPC do protocolo do Google.

  4. Crie o método para a 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 a solicitação tiver dados de string de consulta ou de caminho, substitua o tipo de mensagem de solicitação por um ResourceContainer apropriado.

  5. Adicione o código para disponibilizar a API, conforme descrito em Como criar um servidor da Web.

A seguir