Tem de definir um servidor Web que use a API ou as APIs que criou. Os frameworks do Cloud Endpoints para Python implementam a interface de gateway do servidor Web (WSGI) padrão para encaminhar pedidos para a sua API para os métodos no seu código.
Tal como acontece com todas as aplicações executadas no App Engine, tem de criar um ficheiro denominado app.yaml
no qual configura as definições da app do App Engine. Para definir o servidor Web,
altere o ficheiro app.yaml
.
Para definir um servidor Web:
Crie um módulo Python, por exemplo,
main.py
, e crie um objetoendpoints.api_server
ao nível superior:O código
api = endpoints.api_server([EchoApi])
cria uma aplicação WSGI que encaminha pedidos de API para os métodos na classeEchoAPI
.Pode fornecer uma lista de objetos
remote.Service
(que definiu quando criou a sua API) paraendpoints.api_server
. Se tiver uma API implementada em várias classes, o seu objetoremote.Service
é uma coleção de classes, conforme descrito em Criar uma API implementada com várias classes.Se cria um módulo separado para o objeto
endpoints.api_server
depende de ter criado uma única API ou várias APIs.Se criou várias APIs (usando várias subclasses) definidas em vários ficheiros, recomendamos que crie um módulo separado para o objeto
endpoints.api_server
para poder importar todos os ficheiros de classe.remote.Service
Se criou uma única API, pode adicionar o código
endpoints.api_server
necessário ao módulo onde define a sua API, porque não precisa de importar outras classes.
No ficheiro
app.yaml
, mapeie o servidor Web que acabou de criar para a localização do Cloud Endpoints da seguinte forma:onde
main
é o módulo Python no qual definiu o objetoendpoints.api_server
.
Publicar a sua API a partir de um caminho diferente
Opcional: para publicar a sua API a partir de um caminho diferente, por exemplo, /api/
:
Modifique o decorador:
@endpoints.api(name='echo', version='v1', base_path='/api/')
Altere a secção
handlers
no ficheiroapp.yaml
:handlers: - url: /api/.* script: main.api
Registo no Endpoints Frameworks para Python
O Endpoints Frameworks para Python usa o módulo de registo Python padrão para registar informações sobre o estado da aplicação e o ciclo de vida do pedido. Para saber mais sobre os registos do App Engine e como os ver, reveja o artigo Ler e escrever registos de aplicações na documentação do App Engine.
O módulo de registo do Python oferece níveis de registo predefinidos. Por ordem crescente de gravidade, os níveis de registo são:
Nível de registo | Descrição |
---|---|
DEBUG |
Fornece registos detalhados. Normalmente, só define este nível quando resolve um problema. |
INFO |
O nível de registo predefinido para os frameworks de pontos finais. Permite-lhe acompanhar o progresso da aplicação a um nível elevado. |
WARNING |
Avisa que ocorreu algo inesperado, mas a aplicação pode recuperar e continuar a ser executada normalmente. |
ERROR |
Alerta para o facto de ter ocorrido um erro que pode causar alguma perda de funcionalidade, mas a aplicação continua a ser executada. |
CRITICAL |
Alerta para o facto de ter ocorrido um erro ou um evento grave que pode fazer com que a aplicação seja encerrada. |
Os registadores existem numa hierarquia separada por pontos. Por exemplo, o registador
endpoints.api_config
é um filho do registador endpoints
. Esta hierarquia
dá-lhe um controlo preciso sobre os registos que são emitidos ou suprimidos. Normalmente, só altera os dois registadores de raiz para os Frameworks de Endpoints: endpoints
e endpoints_management
.
Ative o registo DEBUG
para os frameworks de endpoints
Para evitar sobrecarregar o leitor de registos, o Endpoints Frameworks define os respetivos registadores para registarem apenas entradas de registo com o nível de registo INFO
ou superior. Em qualquer altura após a importação dos Frameworks de Endpoints para o seu módulo, pode alterar o nível do registo da seguinte forma:
import logging
logging.getLogger('endpoints').setLevel(logging.DEBUG)
logging.getLogger('endpoints_management').setLevel(logging.DEBUG)
O método setLevel
define o nível de registo mínimo para o registador.