Desenvolvimento

Criando uma API Rest com Quarkus: Parte 1

Pensando em criar CRUD? Neste artigo vamos mostrar usando o Quarkus, mas antes de iniciar o artigo, vamos primeiro explicar o que é CRUD. CRUD significa Create (Criar), Read (Ler), Update (Atualizar) e Delete (Apagar), esse é o nome quando queremos falar dessas 4 operações envolvendo alguma entidade, e é isso que vamos fazer com a nossa API Rest usando o Quarkus.

Pré-Requisitos

Para seguir o tutorial recomendamos que use uma JDK e uma IDE. Mas também pode usar apenas docker e fazer a compilação por ele, no final do artigo vamos mostrar um exemplo de docker para compilar o código.

Inicializando o projeto

Para nosso exemplo vamos criar um projeto com RESTEasy + banco de dados H2 e para criar você pode fazer via terminal ou via code.quarkus.io, que é uma “loja online” onde você consegue em poucos cliques gerar um projeto, que em nosso exemplo base pode ser baixado aqui.

Porém caso queira o mesmo resultado com linha de comando você poderia fazer com maven desta forma:

export QUARKUS_VERSION=3.6.1
mvn io.quarkus.platform:quarkus-maven-plugin:${QUARKUS_VERSION}:create \
    -DprojectGroupId=br.com.codeinloop \
    -DprojectArtifactId=todo-crud-rest \
    -Dextensions='quarkus-resteasy,quarkus-hibernate-orm-panache,quarkus-jdbc-h2'
cd todo-crud-rest
Bash

Lembre-se de trocar a variavel QUARKUS_VERSION pela última versão do quarkus que pode ser consultado no site quarkus.io. Com esse código você deve ter a seguinte saída em caso de sucesso:

Se preferir, pode usar o Quarkus CLI em vez do Maven, nesse caso o comando fica assim:

quarkus create app br.com.codeinloop:todo-crud-rest \
    --extension='quarkus-resteasy,quarkus-hibernate-orm-panache,quarkus-jdbc-h2'
cd todo-crud-rest
Bash

Em caso de sucesso você deve ter a mesma tela que teria usando Maven, e para simplificar nosso tutorial vamos usar somente exemplos com maven.

Estruturando o nosso projeto

Para simplificar nosso projeto vamos estruturá-lo da seguinte forma:

  • Controller: A camada Controller lida com as solicitações HTTP que chegam à sua aplicação;
  • Service: A camada Service contém a lógica de negócios da sua aplicação. Ela encapsula regras de negócios, operações de processamento e validações específicas do domínio;
  • Repository: A camada Repository lida com a persistência de dados. Ela fornece uma abstração sobre o armazenamento de dados, permitindo que a aplicação interaja com o banco de dados de forma mais fácil e independente do tipo de armazenamento; e
  • Model: A camada Model representa as entidades de domínio e os objetos de dados da sua aplicação. Ela define a estrutura dos dados que são usados na aplicação e como eles se relacionam.

Neste ponto já temos nossa aplicação iniciada porém ainda não fizemos nada nela, para fins de validação de ambiente e ver o projeto rodando neste momento podemos rodar este comando:

./mvnw compile quarkus:dev
Bash

E se der tudo certo você poderá ver esta tela:

Como rodamos o modo dev podemos acessar duas urls, a padrão http://localhost:8080/ e a interface de desenvolvimento http://localhost:8080/q/dev-ui/extensions

Configuração de Banco de Dados

Para nosso exemplo vamos utilizar um banco de dados em memória H2. Porém, para casos reais você pode querer algo como MySQL/PostgreSQL/Oracle e afins, nesse caso a configuração é similar. Veja, no arquivo src/main/resources/application.properties vamos definir o tipo de banco de dados, usuário, senha e url de conexão com o banco. No exemplo que estamos trabalhando ficaria assim:

quarkus.datasource.db-kind=h2
quarkus.datasource.username=username-default
quarkus.datasource.jdbc.url=jdbc:h2:mem:default
quarkus.datasource.jdbc.max-size=13
Bash

Como parte do nosso tutorial vamos querer que nossa aplicação crie as tabelas e vamos utilizar o modelo que vai sempre deletar e criar a tabela do zero, para isso no mesmo arquivo adicione:

quarkus.hibernate-orm.database.generation = drop-and-create
Bash

Caso você mesmo neste tutorial queira usar outro banco de dados, nós recomendamos a leitura do doc do quarkus.

Na próxima etapa vamos mostrar como criar nossa entidade e fazer o crud! Ficou com alguma dúvida? Acrescentaria algo? Não deixe de comentar, lembrando que todo o código desse crud vai ficar disponível no github. Criamos a parte 2 que pode ser lida aqui: Criando uma API Rest com Quarkus: Parte 2

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.