Criando uma aplicação REST com Pippo

http://www.pippo.ro/

Neste post veremos como podemos utilizar o micro framework Pippo para criarmos uma api rest rapidamente.

Esse é o quinto post sobre o assunto de micro framework, outros post sobre o mesmos podem ser vistos aqui :

Para esse post criaremos 2 simples endpoints (get /post) utilizando as seguintes libs e recursos:


Introdução ao Pippo

É um micro framework web de código aberto (Apache License) em Java, com dependências mínimas e uma rápida curva de aprendizado.

O objetivo deste projeto é criar um micro framework web em Java que deve ser fácil de usar e hackear.

O Pippo pode ser usado em aplicações pequenas e médias e também em aplicações baseadas na arquitetura de micro serviços.

Acreditamos na simplicidade e vamos tentar desenvolver este quadro com estas palavras em mente.

A estrutura é baseada no Java Servlet 3.1 e requer o Java 8.

O Pippo vem com alguns servidores web :

Além disso Pippo também vem com alguns templates engines bem semelhante ao SparkJava e Javalin :

Pippo vem também com os seguintes engines de tipo de conteúdo:

e também suporte da Injeção de dependências utilizando os seguintes módulos:

vejamos um simples Hello-World com Pippo :

agora no navegador basta usar http://localhost:8338/ e pronto. Simples não ?

Bem feita essa rápida introdução sobre o framework, vamos partir para construção do nosso projeto .


Maven Dependencies

crie um projeto maven e configure o pom.xml da seguinte forma :

Aqui a gente vai esta usando o Tomcat como servidor e o Gson como biblioteca de bind de Json .

Criando as Classes

A primeira classe que iremos criar é a Main :

essa é a nossa Classe que vai fazer um start na nossa aplicação , essa classe é bem simples .

aqui eu defini um Opcional para uma porta que o seu valor se pego pela variável de ambiente que vamos definir no AWS .

Em seguida damos um getServer e um getSettings para podemos configurar o caminho de contexto da nossa aplicação , ou seja quando a gente rodar o app, iremos ter algo assim -> http://localhost:8080/api/ .

Logo depois chamamos o start passando um parse para converter o valor recebido do “PORT” para inteiro e caso a gente estive usando o app localmente o mesmo vai assumir a porta 8080.

Agora vamos criar o nosso Controller ou Application, classe que vai conter os nossos endpoints ou Rotas da nossa api, então a mesma ficara da seguinte forma :

Aqui fizemos a extensão da nossa classe chamando o Application, que é a Classe base para todas as aplicações do Pippo.

A partir daqui, você pode fazer algumas alterações de configuração ou aprimoramentos por exemplo:

  • roteador personalizado
  • pedido personalizado
  • resposta personalizada e adicionar rotas.

Então do dentro método onInit() que fica as nossas rotas da api , que no caso temos duas que são o método POST e GET .

Repare que a sua construção é bem semelhante ao outros micros frameworks dos outros artigos, ou seja , a gente consegue reaproveitar o conhecimento dos outros e aplicar nesse .

Na linha 16 estamos preenchendo a nossa classe Event com as informações vinda do Json quando estamos utilizando um postman ou algo do gênero.

Essa transformação é feita pelo método createEntityFromBody, que transformar o Json em uma entidade corresponde ao dados fornecido e em seguida o mesmo é salvo no banco de dados, retornando uma mensagem de sucesso com o código 200 .

A mesma cosia na linha 23 que retorna a todos os registro do banco de dado e devolve um array de Json com os dados .

No Pippo existe outra forma de expor nossas api, que é bem semelhante ao da Jax-RS Jersery , que no caso ao invés de usamos o Application é utilizado o ControllerApplication na nossa classe EventApplication, porem as nossas rotas vão ficar em outra classe que estende o Controller que é algo assim :

bem semelhante ao que usamos na api Jax-RS , já classe que fica com o ControllerApplicaiton fica de seguinte forma :

Os métodos anexados ao controlador (por exemplo, index) são conhecidos como métodos de ação. Quando Pippo recebe um pedido, ele cria uma nova instância do controlador e chama o método de ação apropriado.

vejamos agora como fazer deploy para o serviço da AWS .


Deploy para o AWS Elastic Beanstalk

Agora vamos fazer deploy do nosso app para a nuvem da AWS , para isso voce precisa ter uma conta .

Uma vez feita a conta, vamos ao serviço chamado AWS Elastic Beanstalk, entaõ segue as imagens para fazermos deploy :

vá em SERVICE e procure por Elastic Beanstalk clique nela e vai abrir a seguinte tela :

Clique no botão AZUL e vai abri a seguinte tela e configure a mesma :

e em seguida clique em upload e vá surgir a seguinte tela para fazermos upload do nosso app :

o Código-fonte pode encontrado aqui : https://github.com/Daniel-Dos/DanielDiasjava-Blog/tree/master/Projeto-Cloud/pippo

faça o build com mvn clean package e dentro da pasta target crie um zip contendo a pasta libs e o jar da aplicação, feito isso de clique em Upload e aguarde o termino do subir o arquivo .

Após isso clique no botão Configure more options , vai ser aberto essa tela :

e clique em Software para a gente configura a variável de ambiente PORT :

salve e clique em CREATE APP :

aguarde um pouco e depois aperte F5 para entrar nessa tela :

agora basta acessa a URL mostrada acima, no meu caso é :

http://pippodemo-env.uagg2kyxqm.us-east-2.elasticbeanstalk.com/

basta abir um Postman e adicionar o POST da seguinte forma :

http://pippodemo-env.uagg2kyxqm.us-east-2.elasticbeanstalk.com/api/events

Bem isso é tudo : )

espero que os leitores tenham gostado de conhecer mais framework para construção de micro serviços de forma mais rápida e bem objetiva .

REFERÊNCIAS