Criando uma aplicação REST com Jooby

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

Esse é o quarto 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 :


Introdução ao Jooby

Jooby é um modular, escalável e rápido micro framework web para Java e Kotlin para construção de Micro Serviços .

Jooby oferece as seguintes features :

  • Ciclo de desenvolvimento Rápido : Com Jooby podemos , executar ,debugar e fazer reload da nossa aplicação usando o DevTools que está disponível para Maven e Gradle.
  • Rotas de Script: assim como os frameworks citados acima, Jooby oferece um modelo livre de anotações e reflexão usando lambdas.
  • MVC Rotas: Jooby fornece rodas nos modes do MVC, utilizando anotações, bem similar ao que usamos com Jax-RS e Spring .
  • Multiplos Servidores: Jooby fornece suporte a 3 servidores : Jetty, Netty e Undertow .
  • Multiplos Protocolos: http, https, http 2.0, Server-Sent Events(SSE) e Web Socket
  • Modular: uma coisa legal do Jooby é que ele é todo modular, ou seja, podemos adicionar módulos que realmente iremos utilizar .

Jooby é muito simples e fácil de aprender, assim como outros framework, pois os mesmo oferecem um estilo semelhante, então sabendo mexe com um deles, a gente consegue se adaptar os outros frameworks do mesmo estilo .

Como o mesmo objetivo do outros, é usado principalmente para criar APIs REST, mas também oferece suporte a alguns template engines como :

Além de oferecer suporte a libs de Json como :

vejamos um simples Hello-World com Jobby :

ou com Kotlin :

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

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


Crie um projeto Maven com o seguinte pom.xml :

aqui no pom.xml estou usando alguns módulos do Jooby que são :

Alem disso estamos usando Java 10 e adicionamos algumas dependências co Jax-B .

feito isso vamos criar um pasta “conf” dentro da raiz do projeto e adicionar um “application.conf” dentro dessa pasta com o seguinte conteúdo :

aqui é um arquivo de properties para estarmo passando algumas configurações , no nosso caso estamos configurando um banco em memoria passando o valor “mem” e estamos configurando as propriedades do Hibernate.

Agora vamos criar a nossa Classe principal, crie um novo pacote no seu projeto e adicione a seguinte classe :

na linha 17 a gente herda do Jooby e seguida abrimos um bloco de chaves e é nesse grande bloco que iremos iniciar tudo que é refente ao Jooby .

Na linha 20 estamos injetando nossa implementação que usar o EntityManager do JPA. Aqui o Jooby usa o guice ao invés do CDI.

Nas linhas 26–29 fazemos o uso dos nosso módulos, cada modulo tem propriedades extras.

Na linha 29 estamos usando o Hibernate e configurar o mesmo para “escanear ” a classe “Events”, aqui também pode ser passado o nome do pacote ou pode ser declarado no arquivo “application.conf ”com a propriedade : “hibernate.packagesToScan = ${application.ns}” .

Na linha 33–35 temos o chamada inicial, para quando a aplicação executar a mesma já persistir um valor em nossa base de dados. Isso é o mesmo que utilizar o @PostConstructdo Java EE .

em seguida entramos nas nossa rotas ou endpoint para podemos acessar o endereço do serviço .

Na linha 37 declaramo um path com um endereço fixo para aquela api, todas as rotas dentro de Path irão responder ao endereço “/app/events”.

Na Linha 39 temos a nossa rota GET que tem a função de listar todas as informações da base de dados e exibir em formato Json utilizando o modulo Jackson .

Na linha 41–46 inicia a rota de POST podermos enviar requisições, nele passamos a classe Event.class para o método req.body() que fica responsável por fazer parse de dados do Json ou XML e em seguida ele pega o objeto preenchido e persiste no nosso Service.save do Hibernate .

em seguida chamado o Response(res) e chamamos o método send() passando para ele um objeto contento um código e uma mensagem que ira ser exibida depois de persistir o nosso Evento .

depois chamamos no método main, um método estático run() que ira da no start em nossa aplicação e poderemos acessar a nossa aplicação no seguinte endereço : http://localhost:8080/app/events tanto para GET quanto para POST .

por fim vamos as ultimas classes do nosso projeto que são o Model e o de persistência :

O model é bem simples, é uma classe chamada Event.java contento anotações do JPA :

e a classe responsável por resposta contendo um código e uma mensagem :

em seguida temos uma interface que contem dois métodos para para recuperar e persistir :

e por último a classe que implementa essa interface :

Bem isso é tudo, espero que os leitores tenham gostado de conhecer o Jooby para construções de serviços Rest rapidamente .

Código fonte = https://github.com/Daniel-Dos/DanielDiasjava-Blog/tree/master/Projeto-Cloud/jooby

REFERÊNCIAS