Como criar a API usando o Cloud Endpoints Frameworks para Python
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
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.
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.
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:
classEchoRequest(messages.Message):message=messages.StringField(1)classEchoResponse(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.
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",)defecho(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.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-08-18 UTC."],[[["\u003cp\u003eAn API is an RPC service with remote methods accessible to external clients, requiring a service class that subclasses \u003ccode\u003eremote.Service\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eEach API method needs \u003ccode\u003eMessage\u003c/code\u003e classes defined for both incoming requests and outgoing responses to properly map data, though these \u003ccode\u003eMessage\u003c/code\u003e classes are not part of the exposed API.\u003c/p\u003e\n"],["\u003cp\u003eIf requests have path or query string arguments, a \u003ccode\u003eResourceContainer\u003c/code\u003e class should be used instead of a simple \u003ccode\u003eMessage\u003c/code\u003e class for data mapping.\u003c/p\u003e\n"],["\u003cp\u003eTo create an API, you must decorate a subclass of \u003ccode\u003eremote.Service\u003c/code\u003e with \u003ccode\u003e@endpoints.api\u003c/code\u003e, define \u003ccode\u003eMessage\u003c/code\u003e or \u003ccode\u003eResourceContainer\u003c/code\u003e classes for requests and responses, and decorate the method with \u003ccode\u003e@endpoints.method\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThe API's name and version, specified in the \u003ccode\u003e@endpoints.api\u003c/code\u003e decorator, are incorporated into the API's URL path, allowing for version management.\u003c/p\u003e\n"]]],[],null,[]]