Este documento descreve como criar um endpoint RESTful na nuvem do Google App Engine usando Java. Ele explica como criar entidades de dados, gerar código de ponto final da nuvem e implementar operações CRUD para recursos usando o plugin do Eclipse para Google.
1. Criando um Google App Engine Cloud
Endpoint RESTful
Autores:
Fábio Rosato fabio.
rosato@sensedia.com @
frosato
José Vahl jose.
vahl@sensedia.com @
josevahl
Documentação disponível em:
http://goo.gl/vZEo6v
Premissas
As ferramentas utilizadas no cursos são as seguintes, com os respectivos links para download:
● Java 7+
○ http://www.oracle.com/technetwork/java/javase/downloads/index.html
● Eclipse IDE for Java EE Developers
○ https://www.eclipse.org/downloads/
● Google Plugin for Eclipse
○ https://developers.google.com/eclipse/
● Postman ou SoapUI
○ http://www.getpostman.com/
○ http://www.soapui.org/
Além disso é imprescíndivel ter uma conta Google para a realização do deploy da aplicação ou
endpoint no Google App Engine. A conta deve estar configuração no no Google Eclipse Plugin.
2. Criando um projeto Google App Engine
Clique em File => New => Other… para criar um projeto do tipo Web Application Project.
Selecione no Wizard o tipo de projeto Google Web Application Project.
3. Dê um nome para o projeto no campo “Project Name” e inclua o nome base do pacote dos
códigosfontes
no campo “Package”. Depois clique em “Finish”.
4. Abaixo a estrutura do projeto ComidaBoteco criada:
Agora vamos criar as entidades que serão os recursos da nossa API. Vamos utilizar uma
classe de entidade para Restaurantes e outra para Pratos.
6. Abaixo os atributos do recurso Pratos.
Isto é tudo que precisamos para persistir no lado do servidor os objetos Restauntes e Pratos.
Agora vamos utilizar um gerador de código que vem com o Google Eclipse Plugin para criar um
appengine cloud endpoint.
Clique com o botão direto sobre a classe e selecione "Create Cloud Endpoint Class" (tal como
na imagem abaixo).
Vamos fazer isso para a entidade Restaurantes...
8. O plugin criou três arquivos. Um para o lado da persistência dos dados (EMF.java), outro que
expõe as operações CRUD da classe Restaurantes (RestaurantesEndpoint.java) e outro para
Pratos (RestaurantesEndpoint.java).
Isto é tudo pessoal! Vamos iniciar a e acessar localmente a API.
Execução local da API
Execute o projeto como “Web Application” e será iniciado um servidor AppEngine local.
Pronto sua API já está disponível localmente.
Acessando a API
Existem um número de APIs expostas pelo appengine, e elas estão rodando sobre a URL
_ah/api. Vamos acessar o Discovery API, acessível via:
http://localhost:8888/_ah/api/discovery/v1/apis
9. Esta é a lista de todas REST APIsThis espostas pelo noso servidor. Existem duas APIs, a
RestaurantesEndpoint e a PratosEndpoint. Nós podemos navegar nelas nos links abaixo:
http://localhost:8888/_ah/api/discovery/v1/apis/restaurantesendpoint/v1/rest (referenciado pelo
campo "discoveryLink". Que retorna um host de informações sobre o endpoint da API de
Restaurantes...
10. ...e
http://localhost:8888/_ah/api/discovery/v1/apis/pratosendpoint/v1/rest
Nós podemos testar as APIs utilizando o Postman ou SoapUI.
Deploy da API
Agora vamos realizar o deploy da aplicação na cloud do Google. Com o projeto selecionado
clique no ícone do Google, conforme a imagem abaixo e selelecione a opção “Deploy to App
Engine…”
11. Se você tentar fazer deploy irá receber o seguinte erro:
12. O erro ocorre, pois precisamos criar um aplicação no Google App Engine para termos um
Application ID. Para criar a aplicação acesse o link: https://appengine.google.com/ e crie uma
aplicação com o mesmo Application ID definido nas configurações da aplicação, clicando no
botão “Create Application”.
Preencha os campos “Application Identifier” e “Application Title”. O Application Identifier é que
iremos utilizar no Google Eclipse Plugin para referenciar a aplicação na cloud e realizarmos o
deploy.
Se tudo correu bem você receberá a seguinte mensagem:
13. Voltando no Eclipse, clique em “App Engine Project Settings…” e preencha o campo
“Application ID” com o valor que você utilizou para o popular o campo “Application Identifier”.
Agora está tudo ok para a realização do deploy.
14. A aplicação será compilada, otimizada, entregue e inicializada no Google App Engine.
As URLs dos recursos na cloud ficam:
● https://1dotcomidaboteco.
appspot.com/_ah/api/restaurantesendpoint/v1/restaurantes
● https://1dotcomidaboteco.
appspot.com/_ah/api/pratosendpoint/v1/pratos
A lista completa de operações são:
Restaurantes
● obter um restaurante => GET: /restaurantes/{nome}
● inserir um restaurante => POST: /restaurantes/
● lista de restaurantes => GET: /restaurantes/
● excluir um restaurante => DELETE: /restaurantes/{nome}
● atualizar um restaurante => PUT: /restaurantes/{nome}
15. Pratos
● obter um restaurante => GET: /pratos/{nome}
● inserir um prato => POST: /pratos/
● lista de pratos => GET: /pratos/
● excluir um prato => DELETE: /pratos/{nome}
● atualizar um prato => PUT: /pratos/{nome}
Você pode utilizar e testar os endpoints com a linha de comando CURL ou Postman ou o
SOAPUI.