Criando uma aplicação REST com Pippo

Daniel Dias
Feb 8, 2019 · 6 min read
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

Daniel Dias

SouJava Board Member, JCP Member, JSR-354 (Money), JSR-371 (MVC 1.0), JSR-382 (Configuration 1.0) specifications contributors, Expert Group JSR-385 (UoM 2.0) and Eclipse Committer, is taking the first steps in contributing Open Source projects.

Daniel Dias

Written by

SouJava Board Member, JCP Member, JSR-371 (MVC 1.0), JSR-382 (Config) specifications contributor, EG JSR-385 (UoM) and Eclipse Committer .

Daniel Dias

SouJava Board Member, JCP Member, JSR-354 (Money), JSR-371 (MVC 1.0), JSR-382 (Configuration 1.0) specifications contributors, Expert Group JSR-385 (UoM 2.0) and Eclipse Committer, is taking the first steps in contributing Open Source projects.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade