Esta página mostra como configurar, implementar e enviar pedidos para uma API de exemplo usando os Cloud Endpoints Frameworks para Java. O Endpoints Frameworks for Java está integrado com o ambiente de execução Java 8 padrão do App Engine. O Endpoints Frameworks consiste em ferramentas, bibliotecas e capacidades que lhe permitem gerar APIs e bibliotecas cliente a partir de uma aplicação do App Engine.
Objetivos
Use a seguinte lista de tarefas de alto nível à medida que avança no tutorial. Todas as tarefas são necessárias para enviar pedidos com êxito para a API.
- Configure um Google Cloud projeto. Consulte a secção Antes de começar.
- Instale o software necessário e crie uma aplicação do App Engine. Consulte o artigo Instalar e configurar o software necessário.
- Transfira o exemplo de código. Consulte a secção Obter o exemplo de código.
- Gere um ficheiro de configuração da OpenAPI. Consulte o artigo Configurar o Cloud Endpoints.
- Implemente a configuração do Endpoints para criar um serviço do Endpoints. Consulte o artigo Implementar a configuração dos Endpoints.
- Execute o exemplo no seu computador. Veja o artigo Executar o exemplo localmente.
- Crie um back-end para publicar a API e implemente a API. Consulte o artigo Implementar o back-end da API.
- Envie um pedido para a API. Consulte o artigo Enviar um pedido para a API.
- Acompanhe a atividade da API. Consulte o artigo Acompanhamento da atividade da API.
- Evite incorrer em cobranças na sua conta Google Cloud . Consulte a secção Limpar.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
 
 
 
  Para gerar uma estimativa de custos com base na sua utilização projetada,
      use a calculadora de preços.
  
Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- 
    
    
      In the Google Cloud console, on the project selector page, select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
    
    
      In the Google Cloud console, on the project selector page, select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- Tome nota do ID do projeto, pois é necessário mais tarde.
Instalar e configurar o software necessário
- Se não tiver o Java 8 instalado, transfira o Java Development Kit (JDK) a partir do site da Oracle e instale-o. Uma vez que os Endpoints Frameworks for Java dependem do ambiente de execução Java 8 padrão do App Engine, os Endpoints Frameworks não suportam outras versões do Java.
- Se não tiver o Maven 3.3.9 ou superior, transfira-o e instale-o.
- 
    
Precisa de uma aplicação para enviar pedidos para a API de exemplo. - Utilizadores do Linux e macOS: este tutorial oferece um exemplo de utilização do
  curl, que normalmente vem pré-instalado no seu sistema operativo. Se não tiver ocurl, pode transferi-lo nacurlpágina de lançamentos e transferências.
- Utilizadores do Windows: este tutorial fornece um exemplo com Invoke-WebRequest, que é suportado no PowerShell 3.0 e posterior.
 
- Utilizadores do Linux e macOS: este tutorial oferece um exemplo de utilização do
  
- Transfira e inicialize a CLI Google Cloud.
- Execute os seguintes comandos:
  - Certifique-se de que a CLI gcloud está autorizada a aceder aos seus dados e serviços em Google Cloud:
   gcloud auth login 
- Usar credenciais padrão da aplicação:
   gcloud auth application-default login 
- Instale o componente app-engine-javado SDK Google Cloud:gcloud components install app-engine-java 
- Atualize para a versão mais recente do SDK do Google Cloud e de todos os componentes:
   gcloud components update 
 
- Certifique-se de que a CLI gcloud está autorizada a aceder aos seus dados e serviços em Google Cloud:
   
-  Crie uma aplicação do App Engine:
- 
   Defina o projeto predefinido para o ID do seu projeto.
    gcloud config set project YOUR_PROJECT_ID Substitua YOUR_PROJECT_IDpelo ID do seu Google Cloud projeto. Se tiver outros Google Cloud projetos e quiser usargcloudpara os gerir, consulte o artigo Gerir configurações da CLI gcloud.
- Selecione a região onde quer criar a sua aplicação do App Engine. Execute o seguinte comando para obter uma lista de regiões:
  gcloud app regions list 
- Crie uma aplicação do App Engine com o seguinte comando.
    Substitua YOUR_PROJECT_IDpelo ID do seu projeto e Google CloudYOUR_REGIONpela região onde quer que a aplicação do App Engine seja criada.gcloud app create \ --project=YOUR_PROJECT_ID \ --region=YOUR_REGION 
 
- 
   Defina o projeto predefinido para o ID do seu projeto.
    
Nota para utilizadores do Windows: se estiver a instalar o JDK e o Maven no Windows, instale-os num diretório que não tenha um espaço no caminho. Consulte o artigo Maven no Windows para mais informações.
Obter o exemplo de código
Para clonar a API de exemplo do GitHub:
- Clone o repositório de exemplo para a sua máquina local: - git clone https://github.com/GoogleCloudPlatform/java-docs-samples
- Altere para o diretório que contém o código de exemplo: - cd java-docs-samples/appengine-java8/endpoints-v2-backend
Configurar pontos finais
O código de exemplo inclui a ferramenta Endpoints Frameworks que gera um ficheiro de configuração OpenAPI que descreve a API REST do código de exemplo. Siga os passos nesta secção para configurar e criar o projeto Maven de exemplo, de modo que possa gerar o ficheiro de configuração da OpenAPI.
Adicionar o ID do projeto ao exemplo de código da API
Tem de adicionar o ID do projeto obtido quando criou o projeto
ao pom.xml do exemplo antes de poder implementar o código.
Para adicionar o ID do projeto:
- Edite o ficheiro - java-docs-samples/appengine-java8/endpoints-v2-backend/pom.xml.
- Pesquise - <endpoints.project.id>e substitua- YOUR_PROJECT_IDpelo seu Google Cloud ID do projeto.- Por exemplo: - <endpoints.project.id>example-project</endpoints.project.id>
- Guarde as alterações. 
Criar o projeto de exemplo
Para criar o projeto:
- Certifique-se de que está no diretório - java-docs-samples/appengine-java8/endpoints-v2-backend.
- Execute o seguinte comando: - mvn clean package
- Aguarde pela compilação do projeto. Quando o projeto termina com êxito, é apresentada uma mensagem semelhante à seguinte: - [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 14.846s [INFO] Finished at: Wed April 13 09:43:09 PDT 2016 [INFO] Final Memory: 24M/331M
Gerar o ficheiro de configuração da OpenAPI
Usa uma ferramenta da biblioteca Endpoints Frameworks para gerar um documento OpenAPI denominado openapi.json. Este ficheiro descreve a API REST do código de exemplo.
Para gerar o ficheiro de configuração da OpenAPI:
- Invoque a ferramenta Endpoints Frameworks através deste comando: - mvn endpoints-framework:openApiDocs
- Aguarde pela criação da especificação de configuração. Quando terminar, é apresentado um mensagem semelhante a esta: - OpenAPI document written to target/openapi-docs/openapi.json- Ignore todas as mensagens sobre a falha ao carregar uma classe de registo estática. 
Implementar a configuração dos pontos finais
Para implementar a configuração do Endpoints, usa a infraestrutura de serviços, a plataforma de serviços fundamentais da Google, usada pelos Endpoints Frameworks e outros serviços para criar e gerir APIs e serviços
Para implementar o ficheiro de configuração:
- Certifique-se de que está no diretório - java-docs-samples/appengine-java8/endpoints-v2-backend.
- Implemente o ficheiro de configuração da OpenAPI gerado na secção anterior: - gcloud endpoints services deploy target/openapi-docs/openapi.json
Esta ação cria um novo serviço de Endpoints com o nome no formato
YOUR_PROJECT_ID.appspot.com. Este nome está configurado em
pom.xml e noutros ficheiros de configuração incluídos no exemplo. Tenha em atenção que, quando implementa a API no App Engine, é criado um registo de DNS com o formato de nome YOUR_PROJECT_ID.appspot.com, que é o nome do domínio totalmente qualificado (FQDN) que usa quando envia pedidos para a API.
À medida que cria e configura o serviço, a gestão de serviços envia informações para o terminal. Pode ignorar com segurança os avisos
sobre os caminhos em openapi.json que não requerem uma chave da API. Após a conclusão bem-sucedida, é apresentada uma linha semelhante à seguinte com o ID de configuração do serviço e o nome do serviço:
Service Configuration [2017-02-13-r2] uploaded for service [example-project-12345.appspot.com]
No exemplo anterior, 2017-02-13-r2 é o ID de configuração do serviço e example-project-12345.appspot.com é o nome do serviço.
Consulte o artigo
gcloud Implementação de serviços de pontos finais
para mais informações.
A verificar os serviços necessários
Para fornecer a gestão de APIs, o Endpoints Frameworks requer os seguintes serviços:| Nome | Título | 
|---|---|
| servicemanagement.googleapis.com | Service Management API | 
| servicecontrol.googleapis.com | Service Control API | 
Na maioria dos casos, o comando gcloud endpoints services deploy ativa estes serviços obrigatórios. No entanto, o comando gcloud é concluído com êxito, mas não ativa os serviços necessários nas seguintes circunstâncias:
- Se usou uma aplicação de terceiros, como o Terraform, e não incluiu estes serviços. 
- Implementou a configuração do Endpoints numGoogle Cloud projeto existente no qual estes serviços foram explicitamente desativados. 
Use o seguinte comando para confirmar que os serviços necessários estão ativados:
gcloud services list
Se não vir os serviços necessários listados, ative-os:
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.comAtive também o serviço Endpoints:
gcloud services enable ENDPOINTS_SERVICE_NAME
Para determinar o ENDPOINTS_SERVICE_NAME, pode:
- Após implementar a configuração do Endpoints, aceda à página Endpoints na Cloud Console. A lista de ENDPOINTS_SERVICE_NAME possíveis é apresentada na coluna Nome do serviço. 
- Para a OpenAPI, o ENDPOINTS_SERVICE_NAME é o que especificou no campo - hostda sua especificação OpenAPI. Para o gRPC, o ENDPOINTS_SERVICE_NAME é o que especificou no campo- nameda sua configuração de pontos finais gRPC.
Para mais informações sobre os comandos gcloud, consulte os
serviços gcloud.
Executar o exemplo localmente
Depois de implementar a configuração do Endpoints, pode executar o exemplo localmente.
- Crie uma variável de ambiente denominada - ENDPOINTS_SERVICE_NAME, que é usada no ficheiro- appengine-web.xmldo exemplo para definir o nome do anfitrião. No exemplo seguinte, substitua- YOUR_PROJECT_IDpelo ID do seu projeto.Google Cloud- No Linux ou Mac OS: - export ENDPOINTS_SERVICE_NAME=YOUR_PROJECT_ID.appspot.com - No Windows PowerShell: - $Env:ENDPOINTS_SERVICE_NAME="YOUR_PROJECT_ID.appspot.com" 
- Adquira novas credenciais de utilizador para usar com as Credenciais padrão da aplicação: - gcloud auth application-default login
- Execute o servidor de programação: - mvn appengine:run- A instância local está acessível em - http://localhost:8080, conforme indicado pelos registos impressos pelo comando- mvn appengine:run:- [INFO] GCLOUD: INFO: Module instance default is running at http://localhost:8080/
- Envie um pedido para a instância local: 
Linux ou Mac OS
curl \
    --request POST \
    --header "Content-Type: application/json" \
    --data '{"message":"hello world"}' \
    http://localhost:8080/_ah/api/echo/v1/echo
Nos curl anteriores:
- A opção --dataespecifica os dados a publicar na API.
- A opção --headerespecifica que os dados estão no formato JSON.
PowerShell
(Invoke-WebRequest -Method POST -Body '{"message": "hello world"}' `
    -Headers @{"content-type"="application/json"} `
    -URI "http://localhost:8080/_ah/api/echo/v1/echo").Content
No exemplo anterior, as duas primeiras linhas terminam com um acento grave. Quando colar o exemplo no PowerShell, certifique-se de que não existe um espaço após os acentos graves. Para obter informações sobre as opções usadas no pedido de exemplo, consulte Invoke-WebRequest na documentação da Microsoft.
A API devolve a mensagem que lhe envia e responde com o seguinte:
{
 "message": "hello world"
}
Implementar o back-end da API
Até agora, implementou a configuração da OpenAPI na gestão de serviços, mas ainda não implementou o código que publica o back-end da API. Esta secção explica como implementar a API de amostra no App Engine.
Para implementar o back-end da API:
- Certifique-se de que está no diretório - java-docs-samples/appengine-java8/endpoints-v2-backend
- Implemente o código de implementação da API através do Maven: - mvn appengine:deploy- Quando carregar uma app de exemplo pela primeira vez, pode ser-lhe pedido que autorize a implementação. Siga as instruções. Quando lhe for apresentada uma janela do navegador com um código, copie-o para a janela do terminal. 
- Aguarde que o carregamento termine. - Recomendamos que aguarde alguns minutos antes de enviar pedidos para a sua API enquanto o App Engine é completamente inicializado. 
Enviar um pedido para a API
Depois de implementar a API e o respetivo ficheiro de configuração, pode enviar pedidos para a API.
Linux ou Mac OS
Envie um pedido HTTP através de curl. Substitua [YOUR_PROJECT_ID] pelo seu
Google Cloud ID do projeto:
curl \
    --request POST \
    --header "Content-Type: application/json" \
    --data '{"message":"hello world"}' \
    https://[YOUR_PROJECT_ID].appspot.com/_ah/api/echo/v1/echo
Nos curl anteriores:
- A opção --dataespecifica os dados a publicar na API.
- A opção --headerespecifica que os dados estão no formato JSON.
PowerShell
Envie um pedido HTTP através de Invoke-WebRequest. Substitua [YOUR_PROJECT_ID]
pelo ID do seu Google Cloud projeto:
(Invoke-WebRequest -Method POST -Body '{"message": "hello world"}' `
    -Headers @{"content-type"="application/json"} -URI `
     "https://[YOUR_PROJECT_ID].appspot.com/_ah/api/echo/v1/echo").Content
No exemplo anterior, as duas primeiras linhas terminam com um acento grave. Quando colar o exemplo no PowerShell, certifique-se de que não existe um espaço após os acentos graves. Para obter informações sobre as opções usadas no pedido de exemplo, consulte Invoke-WebRequest na documentação da Microsoft.
App de terceiros
Pode usar uma aplicação de terceiros, como a extensão do navegador Chrome Postman, para enviar o pedido:
- Selecione POSTcomo verbo HTTP.
- Para o cabeçalho, selecione a chave content-typee o valorapplication/json.
- Para o corpo, introduza o seguinte:
 {"message":"hello world"}
- 
Introduza o URL da aplicação de exemplo. Por exemplo:
 
 https://example-project-12345.appspot.com/_ah/api/echo/v1/echo
A API devolve a mensagem que lhe envia e responde com o seguinte:
{
 "message": "hello world"
}
Se não recebeu uma resposta bem-sucedida, consulte o artigo Resolução de problemas de erros de resposta.
Acabou de implementar e testar uma API nos Frameworks de Endpoints!
Acompanhamento da atividade da API
- Veja os gráficos de atividade da sua API na Google Cloud consola na página Endpoints > Serviço. - Aceda à página Serviços de pontos finais - Pode demorar alguns momentos até que o pedido seja refletido nos gráficos. 
- Consulte os registos de pedidos da sua API na página do Explorador de registos. 
Criar um portal para programadores para a API
Pode usar o portal do Cloud Endpoints para criar um portal do programador, um Website que pode usar para interagir com a API de exemplo. Para saber mais, consulte a vista geral do portal do Cloud Endpoints.
Limpar
Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
O que se segue?
- Saiba mais acerca da arquitetura dos Frameworks de Endpoints.
- Saiba mais sobre as anotações da API disponíveis.
- Saiba como servir a sua API a partir de um caminho diferente.
- Saiba como monitorizar a sua API.
- Saiba como restringir o acesso com chaves de API.
- Saiba como tratar o controlo de versões da API.
- Saiba mais sobre as opções de apoio técnico da comunidade.