Existem diversas formas e ferramentas para se construir APIs, hoje inicio uma série de posts em que construo uma API simples usando Spring Boot e Kotlin para um app que eu e meus amigos criamos há um tempo.
O app Android que criamos servia para ajudar consumidores a montar PCs por meio da escolha das suas peças, como placa-mãe, processador, memória ram, etc. Como nosso app não tem um back-end próprio, o back-end é basicamente feito por meio do Firebase, então resolvi construir um back-end para ele.
A API vai ser basicamente um CRUD de um Setup, uma entidade composta por um nome e suas peças, as peças do Setup. Fazer um CRUD significa criar (Create), ler (Read), atualizar (Update) e deletar (Delete).
Nesse primeiro post nós vamos configurar e criar nosso projeto usando a ferramenta Spring Initializr do site do Spring Boot.
O que é Spring Boot?
Spring Boot é um framework Java/Kotlin que facilita a criação de aplicações Web como APIs e webservices. Ele provê de forma default servidores como o Tomcat e dependências que simplificam a configuração do build.
Nessa série de posts nós vamos usar o Spring Boot para criar uma API RESTful para um CRUD básica usufruindo de algumas dependências do Spring como a Spring Web e a Spring Data JPA.
Configurando o projeto
Para configurar o projeto, usaremos a ferramenta Spring Initializr que permite em poucos passos gerar um projeto Spring.
Ao acessarmos o site, nós deparamos que a tela de configuração completa, onde escolheremos a build tool do projeto, a linguagem, a versão do Spring Boot, os metadados do projeto, o tipo de empacotamento, a versão do Java e as dependências.
Como pode ver nosso projeto vai usar o build tool Gradle, a linguagem Kotlin, a versão 2.7.5 do Spring Boot, os metadados como Group
, que representa a organização que desenvolverá o projeto e o Artifact
, que se refere ao nome do projeto, é pchunter
, Jar como empacotamento e versão 11 do Java.
Agora quanto as dependências do nosso projeto, vamos usar as seguinte:
- Spring Web: possibilita a utilização do Spring MVC e do Apache Tomcat como container default,
- Spring Data JPA: permite o armazenamento e a persistência de dados em SQL com a Java Persistence API usando o Spring Data e o Hibernate,
- HyperSQL Database: um motor leve para um banco de dados que permite o armazenamento e a persistência de dados tanto em memória quanto em arquivo, ou seja, poderemos usar um banco de dados sem a necessidade de instalar um software para isso, como o MySQL, Oracle e Postgres e
- DevTools: essa dependência é do próprio Spring Boot, ela serve para facilitar o processo de deploy do nosso servidor durante o desenvolvimento.
Pronto, basta clicar em GENERATE
e nosso projeto será baixado como .zip
!
Rodando nosso projeto
Após extrair o projeto, basta abrirmos o projeto em alguma IDE que suporte desenvolvimento Web com Java/Kotlin. Eu optei pelo IntelliJ da Jetbrains porque ele dá suporte a Kotlin e Gradle de forma nativa.
Ao abrirmos o projeto, podemos ver a estrutura criada pelo Initializr como o pacote do projeto com o nosso Group como br.com.pchunter
, entre outros com os arquivos do gradle e do build.
Agora, vamos analizar o arquivo .kt
gerado automaticamente pelo Initializr, o PchunterApplication
. Esse arquivo é a classe padrão com o intuito de rodar o Spring Boot para nós.
Note que essa classe tem a annotation @SpringBootApplication
, ela serve para indicar a classe de configuração do Spring, ou seja, podemos realizar as configurações do nosso projeto a partir dessa classe.
Pronto, já podemos executar nosso projeto rodando a classe PchunterApplication
:
Note que nosso servidor já está operando na porta 8080, ou seja, nossa aplicação já está funcionando!
Ao acessarmos localhost:8080
podemos ver que o Spring Boot respondeu a requisição com um 404 porque ainda não configuramos nenhuma classe Controller
para receber a requisição e responder de alguma forma.
Nosso trabalho acaba por aqui 🤓
Segue repo do github:
Próximo post:
Criando uma API com Spring Boot e Kotlin — parte 2
Ronaldo Costa de Freitas ・ Nov 6 ・ 9 min read
No próximo post vamos criar as classes referentes ao Setup e as funções de GET e POST para a nossa aplicação. Obrigado pela atenção e até a próxima!
Top comments (0)