0

Criando uma Rest Api

#JPA #REST #Java
C
Cristiano Carvalho

Criando uma Rest Api




__Meu amigo, acabaram as desculpas. Depois de ler este post, você não vai ter absolutamente nenhum motivo para deixar de aprender Rest Api ,com esse passo a passo , qualquer pessoa que não domine o assunto poderá criar uma aplicação Api Rest em linguagem Java e Spring como stack. E como você é especialista no seu campo de atuação, não existem mais motivos para não começar agora a implementar nossa nova API.

__Para desenvolvermos este projeto (Rest Api usando spring boot e spring jpa ) , primeiramente vamos utilizar o “Spring Initializr” , pois ele cria o projeto Spring com todas as dependências , tanto para Maven (O Apache Maven é uma ferramenta de automação e gerenciamento de projetos Java) , quanto para o gradle (gradle é um sistema de automação de compilação de código aberto que se baseia nos conceitos de apache Ant e apache Maven ).

__Ao Acessarmos o site (https://start.spring.io/) vamos gerar um projeto escolhendo o Mavem como gerenciador de dependência , o Java 16 (ou Ultimo ) , a versão do Spring Boot (+ Recente ) , escolhemos os nomes e afins e passamos para as dependências : 1-Dev Tools (Api Rest) + JPA (Persistências do Java) + POSTGRESSQL (Drivers do Banco de Dados que usaremos no projeto . Geramos o arquivo em zip e passamos a trabalhar com a Ide

__Podemos usar a I.D.E de seu agrado , escolha entre Spring Tools , Itellij , Eclipse e outras . Neste projeto trabalharemos com a Itellij , iniciamos o projeto como novo projeto Java , importando o arquivo gerado no Initializr .Como utilizamos o Maven ele vai baixar as dependências . Ao Startarmos a aplicação pelo Application Java , a classe aciona o Container do TOMCAT ( Servlet Container) na porta 8080 e bingo , já temos uma aplicação rodando .... 

__Partimos agora para a configuração , criaremos nosso controlador (Controller) , utilizamos a anotação @RESTCONTROLLER (uma classe que vai receber requisições para desenvolvermos nossos endpoints ) , seguindo em frente , utilizaremos também @REQUESTMAPPING (ela mapea os endpoints para receber requisições /Cliente) , usaremos também o mapeamento do HTTP com o GETMAPPING (ele responde a requisição e chama o método public. String ..... . Criamos uma classe de Clientes para retornar uma lista de clientes dentro de uma pacote chamado MODEL . Configuraremos os dados dos clientes como nome , CPF, email , data de nascimento , passando os devidos parâmetros de Not Null , Chave primaria , Unique , String , Inteiro etc . Para isto precisamos configurar um banco de dados que no nosso caso será o Postgrees , seremos auxiliados pelo Spring Data JPA , que ajuda a implementar repositórios para trabalharmos com o JPA ( Podemos visualizar todas as dependências citadas no pom.xlm).

__Seguimos em frente anotando a classe Cliente com @ Entity , dizemos que isto é uma entidade mapeado para uma tabela no banco de dados , onde existe uma tabela no banco de dados chamada Cliente , tendo um relacionamento com a classe cliente .Anotamos com @Id , que é uma propriedade que identifica a nossa entidade // tipo chave primaria do banco de dados// . Anotamos também com GeneratedAdvalue especificando a strategy = IDENTITY , que é responsável por dizer que o próprio banco de dados incrementa o Id .Usaremos a implementação dos Gets and Setters ou usaremos a dependência do Lomboque (@DATA).

__Próximo passo , criaremos uma interface repository em um pacote Repository , extendendo ou herdando o JpaRepository , passando o “Cliente” e também o “Long” na especificação , que é o tipo de id do cliente. Anotaremos tbm com @Repository , informando que é um componente de modo repositório. Usaremos o @Autowired na classe controller, que vai instanciar uma implementação no clienteRepository .Próxima fase , anotamos o @POSTMAPPING quando partimos para inserir dados .

__Anotamos também o @ResponseStatus , que é responsável por retornar o código HTTP especifico do sucesso cod 200 , CREATD 201 , BAD REQUEST 400 ou algum erro amigável como 404 NOT FOUND.    

 __Passamos então para nosso banco de dados postgrees , após processo de login , iniciamos com a criação das tabelas (Cliente , Veículos , ListagemVeiculos ) especificando os clientes : nome , CPF , email , data nascimento , os veículos em :Marca , Modelo e ano , listagem dos veículos : Nr Veículos , Cliente , Tipo do veiculo , Marca e modelo e também seus respectivos atributos :  Char , Varchar , integer  , null , not null, unique , primary key , Foreign key .

Feito isto , configurado a cnx do banco //de acordo com seu banco usado// no Application Properties , rodamos a aplicação e após recebermos a msg de “Started Application” , já podemos testá-la no programa “Postman”( https://www.postman.com/) . 

__No Postman selecionamos GET para buscar os dados ou POST para inserir os dados (podemos usar também Update e Delete , mas não vem ao caso neste projeto) , configuramos a busca com os devidos dados do código (nome ,nascimento , CPF...) e adicionamos o caminho : http://localhost:8080//Clientes para iniciarmos o teste , caso a consulta tenha sido sucesso , recebemos o codigo 200 , caso não tenhamos sucesso , retornaremos o codigo amigável 404 NOT FOUND . No POST , caso sucesso retorna código 201 CREATED , caso não BAD REQUEST COD 400 . __Disponibilizamos também os END POINTS para uma futura consulta dos dados gerados , com o sistema devidamente hospedados na rede .

__Sendo assim , optamos pelo JAVA , pois é uma tecnologia que dispõem de uma variedade de frameworks que visam facilitar o trabalho do desenvolvedor, a máquina virtual Java atualmente roda cerca de 350 linguagens com pontos interessantes , quando se compila um arquivo em Java ele gera um bytecode que é interpretado numa JVM. Bastando que o seu sistema operacional tenha uma JVM, será possível executar o Java nos sistemas operacionais Windows, GNU/Linux e Mac. Suas principais IDES, podemos citar o Eclipse e o Netbeans, rodam em Java, ou seja, se pode programar em qualquer sistema operacional Utilizamos o Spring, pois O Spring, apesar de antigo não cansa de se reinventar.

__Com a criação do Spring Boot, o framework se colocou de novo no mapa das tecnologias relevantes e vem sendo a base para a construção de aplicações pelo mundo todo.

__O famoso “Spring Rest “ é um conjunto de projetos para você desenvolver Web Service com Java, você terá uma “REST API” desenvolvida utilizando projetos do ecossistema Spring. Podemos destacar o “SPRING BOOT “ , “SPRING FRAMEWORK” , “SPRING DATA “ , “SPRING Cloud” , “SPRING SECURITY” , “SPRING MVC” e diversos outros importantes frameworks que nos auxiliam no dia a dia de nossas aplicações .

__Destacamos também o O Hibernate que é um framework que auxilia a representar tabelas de um banco de dados relacional através de classes. A vantagem dessa estratégia é a de automatizar as tarefas com banco de dados de forma que é possível simplificar o código da aplicação e por fim, não se esqueça do temível “CLEAN CODE”:

__“ Aprender a criar códigos limpos é uma tarefa árdua e requer mais do que o simples conhecimento dos princípios e padrões. Você deve suar a camisa; praticar sozinho e ver que cometeu erros; assistir os outros praticarem e errarem; vê-los tropeçar e refazer seus passos; Vê-los agonizar para tomar decisões e o preço que pagarão por as terem tomado da maneira errada. ”. -> Robert C. Martin, em seu livro: “Clean Code: A Handbook of Agile Software Craftsmanship”

__Clean Code é uma filosofia de desenvolvimento cujo principal objetivo é aplicar técnicas simples que visam facilitar à escrita e leitura de um código, tornando-o de fácil compreensão e revelando a sua real intenção.

__E aí, prontos para a mão na massa??? Ou mão no código ??? Borá lá implementar sua REST API ???


Cristiano Carvalho 12/10/2021 17:14hrs










0
5

Comentários (2)

0
C

Cristiano Carvalho

13/10/2021 20:37

Valeu Arthur ! Sucesso na sua caminhada !!

0
A

Arthur Pires

13/10/2021 03:12

Gostei da citação do Martin, esse livro dele é muito interessante. Já ouvi muito falarem em Spring, parece ser legal. Para construção de API's ando me aventurando com o NestJS, recomendo demais.

None

Brasil