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 :
- Criando uma aplicação REST com Javalin
- Criando uma aplicação REST com SparkJava
- Criando uma aplicação REST Helidon
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 :
- Jooby-Hbm
- Jooby-Jdbc
- Jooby-Jackson
- Jooby-Netty
- Jooby-Banner ( esse é só para fazer arte : ) )
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