Criando uma API Java com framework Spring
Tem vontade de criar uma API com Java e Spring, mas está com dúvidas de como começar?
Nesse artigo, você irá conseguir criar a sua primeira API usando Java e Spring Boot. Será uma API simples para somar dois números.
Tópicos presentes no artigo:
- O que é um framework?
- Por que usar um framework?
- Framework Spring e Spring Boot
- Instalação do JDK
- Instalação do Spring Tool Suite
- Apache Maven
- Configuração do Spring Tools
- Insomnia
- Criando a primeira API com Spring Boot
- Conclusão
O que é um framework?
Framework é uma estrutura que fornece uma base para o processo de desenvolvimento de aplicações. Com a utilização de um framework, você pode evitar escrever tudo zero, ou seja, é possível fazer a reutilização do código.
Por que usar um framework?
O uso de frameworks economiza tempo e reduz risco de erros. Algumas vantagens de sua utilização são:
- Código mais seguro
- Teste e depuração mais simples
- Evitamento de código duplicado
- Código limpo e facilmente adaptável
Framework Spring e Spring Boot
Spring é um framework open-source para desenvolvimento de aplicações Java. O Spring oferece uma série de conjunto de ferramentas e bibliotecas.
Spring Boot é uma extensão do Spring Framework que traz diversos recursos pré configurados facilitando e acelerando o processo de manutenção e setup.
Instalação do JDK
Como o Spring é um framework para aplicações Java, temos que ter em nosso computador o JDK instalado.
Para fazer a instalação do JDK, basta fazer o download na página da Oracle. Nessa aplicação iremos usar o JDK 21.
Site para instalação: https://www.oracle.com/java/technologies/javase/jdk21-archive-downloads.html
Para a instalação, basta instalar a versão compatível com seu sistema operacional, no meu caso será a do Windows.
Após a instalação, vá em downloads no seu computador e execute o arquivo.
Instalação do Spring Tool Suite
Spring Tools é uma IDE baseada em Eclipse que nos proporciona algumas facilidades para trabalhar com Spring.
Site para instalação: https://spring.io/tools
Selecionaremos a versão Spring Tools 4 for Eclipse.
Agora, basta criar uma pasta no arquivo C: com o nome SpringTools e colar o download do arquivo nessa pasta.
Após isso, execute o arquivo e você verá que ele criou uma nova pasta.
Entre nessa pasta e abra o arquivo SpringToolSuite4.
Apache Maven
Apache Maven serve para automatizar a execução de testes unitários durante a fase de build.
Iremos utilizar o Maven nessa aplicação.
Site para download: https://maven.apache.org/download.cgi
Instale o Binary zip archive
Após a instalação, não é necessário executar o Maven.
Configuração do Spring Tools
Para a configuração do Spring Tools, você precisa estar com o programa Spring Tools Suite 4 aberto.
Etapas da configuração:
1- Clique em Window -> preference -> Java -> Installed JREs -> add -> Standard VM -> Next -> Directory. Após clicar em Directory, será preciso informar o diretório do JDK. Geralmente, o JDK fica no seguinte diretório: C:\Program Files\Java\jdk-21
Selecione a opção que está o diretório e clique em Apply and Close.
2 - Clique em Window -> preferences -> Maven -> Installations -> add -> Directory. Após clicar em Directory, será preciso informar o diretório da pasta Maven.
Selecione a opção do diretório que acabou de ser inserido e clique em Apply and Close.
Insomnia
Iremos utilizar o Insomnia para o envio de requisições.
Site para download: https://insomnia.rest/download
Criando a primeira API com Spring Boot
Para criar a aplicação, usaremos o Spring Tools Suite 4.
Para começar, é preciso clicar em Create new Spring Starter Project.
Após isso, aparecerá uma tela para preencher com algumas informações, como nome do projeto, versão do Java, descrição, entre outras coisas relacionadas a aplicação.
Preencha com as informações acima e clique em Next e depois em Finish.
Feito isso, você verá que foi criado uma pasta com vários arquivos dentro.
Agora, clique em pom.xml (pom.xml é o principal arquivo de configuração do Maven, é dentro dele que se define quais as dependências do projeto e as propriedades).
Vamos adicionar uma dependência.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
O Spring boot starter, faz com que conseguimos criar endpoints para chamadas HTTP.
Criaremos mais uma dependência no pom.xml.
<deendency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
Após adicionar a dependência, clique com o botão direito do mouse em cima da aplicação Java e clique em Maven -> update project. Veja se a opção "Force Update of Snapshots/Releases" está marcada, se não estiver, selecione ela. Clique em OK.
Em src/main/java, clique com o botão direito e clique em new -> Package.
Criaremos um pacote chamado com.java.controllers.
- Controller ajuda a gerenciar o fluxo de uma aplicação web e a lidar com solicitações HTTP.
Clique com o botão direito do mouse em com.java.controllers e crie uma classe chamada MathController.
Ela terá a seguinte estrutura:
package com.java.controllers;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import com.java.math.SimpleMath;
@RestController
@RequestMapping(path = "/math")
public class MathController {
private simpleMath simpleMath;
public class MathController {
private simpleMath simpleMath;
public mathController(){
simpleMath = new simpleMath();
}
@GetMapping(path = "/sum/{numberOne}/{numberTwo}")
public Double sum(@PathVariable(name = "numberOne")String numberOne, @PathVariable(name = "numberTwo")String numberTwo){
return mathConverter.convert(numberOne)+mathConverter.convert(numberTwo);
}
}
Explicação:
@Restcontroller: Indica que essa classe é um controlador REST e que cada método nesta classe anotado com @RequesMapping retornará dados em vez de visualizações.
@RequestMapping(path = "/math"): Mapeia as solicitações HTTP que começam com "/math" para este controlador.
@GetMapping(path = "/sum/{numberOne}/{numberTwo}"): Mapeia solicitações GET para a URL "/math/sum/{numberOne}/{numberTwo}". numberOne e numberTwo são variáveis de caminho que podem ser usadas para passar parâmetros através da URL.
public Double sum(@PathVariable(name = "numberOne")String numberOne, @PathVariable(name = "numberTwo")String numberTwo): Este método lida com solicitações GET para "/math/sum/{numberOne}/{numberTwo}". Ele usa as anotações @PathVariable para capturar os valores de numberOne e numberTwo da URL e realizar a soma.
return mathConverter.convert(numberOne) + mathConverter.convert(numberTwo): Aqui, é chamado mathConverter.convert() para converter as strings numberOne e numberTwo em números e então realizar a soma.
Criaremos agora um package com o nome com.java.converters. Dentro dele criaremos uma classe chamada MathConverter, que terá o seguinte código:
package com.java.converters;
public class MathConverter{
public static Double convert(String number) {
if (number == null)
return 0D;
number.replaceAll(",", ".");
if(isNumeric(number))
return Double.parseDouble(number);
return 0D;
}
public static boolean isNumeric(String number) {
if(number == null)
return false;
number.replaceAll(",", ".");
return number.matches("[-+]?[0-9]*\\.?[0-9]+");
}
}
Explicação: Essa classe fornece métodos para converter Strings em números e verificar se uma String é numérica.
Agora, criamos o package com.java.math, com a classe simpleMath, que terá a seguinte estrutura:
package com.java.math
import com.java.converters.mathConverter;
public class simpleMath{
public Double sum(String numberOne, String numberTwo) {
var numberOneConverted = mathConverter.convert(numberOne);
var numberTwoConverted = mathConverter.convert(numberTwo);
return numberOneConverted + numberTwoConverted;
}
}
Explicação: Usa-se a classe MathConverter para converter as Strings em números antes de realizar a operação de soma.
Com isso, criamos a nossa aplicação com Spring. Agora, utilizaremos o Insomnia para testar.
Abra o Insomnia, selecione a opção GET e digite "localhost:8080/math/sum", na frente de sum coloque os dois números que deseja somar, no meu caso coloquei "localhost:8080/math/sum/1/1", que somará 1 + 1.
Como podemos ver, o resultado mostrado foi 2.
Conclusão
O Spring Framework, em conjunto com o Spring Boot e Apache Maven, são extremamente eficaz para o desenvolvimento de aplicativos Java. Ao usar o Spring, os desenvolvedores se beneficiam de uma estrutura que simplifica o desenvolvimento, promove a manutenção e melhora a escalabilidade de aplicativos. O Spring Boot, oferece uma configuração simples e automática, permitindo que os desenvolvedores iniciem rapidamente projetos sem a necessidade de configurações tediosas. Ao integrar o Apache Maven, a gestão de dependências e compilação do projeto se torna mais organizada e eficiente. Por conta disso, a combinação do Spring Framework, Spring Boot e Apache Maven oferece aos desenvolvedores ferramentas poderosas para criar aplicativos Java de alta qualidade, de forma rápida e eficiente.