API Rest do projeto SISSA

Overview

API REST do projeto SISSA

Introdução

Olá, tenho pouca criatividade, então criei mais um modo de colocar na prática o projeto SISSA (Sistema de Suporte ao Advogado) que tem como objetivo conectar o Advogado com o Judiciário local. Já fiz esse projeto com Python/DJANGO e com Java/JSF e agora chegou a vez de utilizar o Spring Boot API REST.

[!OBSERVAÇÃO] Esse projeto, assim como os demais citados, tem o objetivo puramente educacional, não tenho permissão do Poder Judiciário para implementar a ferramenta.

Tecnologias utilizadas e motivação

Banco de dados H2

Já tive experiência de utilizar o MySQL, MariaDB, PostgreSQL, porém, desta vez escolhi o H2 por nunca ter utilizado durante meus estudos e por ser relativamente mais simples de configurar.

Linguagem Java e Framework Spring

Não é segredo que eu sou apaixonado por Python, porém também gosto muito de Java e o mercado de trabalho também. Eu tive uma péssima experiência com JSP, mas quando senti a facilidade do Spring eu percebi que valia muito a pena investir tempo estudando suas características.

API Rest

Quando fui apresentado a essa Arquitetura de Software a minha cabeça explodiu 🤯 . Não consigo imaginar o desenvolvimento WEB de outro jeito. Só imagino o tempo que vou economizar quando for estudar Front-end e simplesmente utilizar o JSON gerado por esse projeto para popular o layout. Sensacional!

IDE IntelliJ

Dentre todas as IDEs que eu testei nessa vida, as produzidas pela JetBrains sem dúvidas são as melhores. A integração com git/github é intuitiva e me faz sentir menos burro em versionamento de código. Atualmente tenho licença de estudante, mas pretendo comprar quando expirar.

Postman

Ferramenta usada para testar a API, está sendo bem útil aprender como usa-lo.

Dificuldades

Listar os Advogados com suas diligências

Ao gerar o Json com os Advogados eu pensei em colocar as diligências que cada um cadastrou junto a seus dados, porém me deparei com um loop infinito de dados, visto que sempre que eu chamava as diligências vinha os dados do Advogado também que por sua vez chamava a diligência novamente. Não sei se fui claro, então lá vai uma imagem:

Problema na apresentação dos Advogados

[!SOLUÇÃO]A solução foi criar um método em AdvogadoDto para adicionar as diligências manipuladas pela classe DiligenciasDto separadamente, visto que essa não trazia o Advogado inteiro e tão somente uma String. Desta forma consegui adicionar as diligências atráves de um forEach e exibir ao usuário em um formato adequado. O resultado final ficou assim: Apresentação correta dos Advogados

Talvez nesse caso não fosse necessário trazer os dados do Advogado na diligência, visto que já há a vinculação no próprio Advogado, mas para eliminar esse dado eu imagino que seria necessário criar um novo Dto para diligência sem essa informação, o que nesse momento acho desnecessário por se tratar de algo irrisório. (com certeza faria se a regra de negócio fosse rígida nesse sentido).

Decidir se faz sentido o uso de Cache na listagem de Advogados

Como sabemos, o uso de cache no Spring via de regra aumenta a performance da aplicação por evitar consultas constantes ao Banco de Dados, porém, para recursos que são atualizados com frequencia pode não ser uma boa ideia já que haveria a necessidade de invalidar o cache a cada novo cadastro/alteração/exclusão. Essa API, caso estivesse em produção, sofreria um grande fluxo de cadastros de Advogados logo no inicio, porém, com o decorrer do tempo os cadastros iriam ser bem mais pontuais, pois os advogados que trabalham regularmente naquele fórum já estariam cadastrados.

[!SOLUÇÃO PRELIMINAR] No primeiro momento eu entendo que não faria sentido a utilização de cache nessa API pelos seguintes motivos: 1) A API seria local, com pouquissimos registros, o ganho de perfomance seria irrisório para justificar; 2) Não há previsão alguma de um fluxo acima de 300 requisições por dia (baseado no projeto em produção), portanto, sem necessidade de escalabilidade.

Implementação do Spring Security de modo geral

Não sei se é comum, mas ter contato com Spring Security com JWT, incluindo geração de token e devolução deste para o cliente me deixou tonto, vou precisar de algumas horas para absorver tanto conhecimento e entender passo a passo como funciona o código, MAS consegui implementar no projeto mesmo assim.

Próximo passo

Implementar o Spring boot Actuator para monitoramento da API e TDD (quero muito aprender a programar orientado a testes)

You might also like...

Simple springboot API for addressBook. Supports all REST controllers and have custom error handling for every specific case, also supports redis caching.

Simple springboot API for addressBook. Supports all REST controllers and have custom error handling for every specific case, also supports redis caching.

AddressBook-SpringBoot-API Simple Springboot API for addressBook with redis cache. Supports all REST controllers and have custom error handling for ev

Jan 21, 2022

This project shows how to configure basic auth to secure our rest API and basic transaction on Data JPA

This project shows how to configure basic auth to secure our rest API and basic transaction on Data JPA

Basic Atuthentication Spring Boot Data JPA, MySQL This project shows how to configure basic auth to secure our rest API and basic transaction on Data

Feb 10, 2022

Spring REST API for financial management, developed with Java 11, JWT for authentication, JUnit for unit testing and Oracle Database

Spring REST API for financial management, developed with Java 11, JWT for authentication, JUnit for unit testing and Oracle Database

control_financial Spring REST API for financial management, developed with Java 11, JWT for authentication, JUnit for unit testing and Oracle Database

May 27, 2022

API REST feita 100% em Java com Spring

API REST feita 100% em Java com Spring

May 8, 2022

Spring JPA Many To Many example with Hibernate and Spring Boot CRUD Rest API - ManyToMany annotation

Spring JPA Many To Many example with Hibernate and Spring Boot CRUD Rest API - ManyToMany annotation

Dec 28, 2022

Spring Boot Rest API unit test with Junit 5, Mockito, Maven

Spring Boot Rest API unit testing with Junit 5, Mockito, Maven Apply Spring Boot @WebMvcTest for Rest Controller Unit Test with JUnit 5 and Mockito. F

Dec 22, 2022

Web-based restaurant management system with spring boot and rest API for school final-year project.

Restaurant Management System Developing this for my school as first final year project. It shall be able to handle most of the challanges that encount

Mar 10, 2022

Warehouse management REST API with Java & Spring Boot

Warehouse management REST API with Java & Spring Boot

Spring Warehouse Spring Warehouse is a Java Spring Boot REST API that has the purpose of managing products and articles in your warehouse. This projec

Dec 15, 2022

Spring-boot project using open-api, docker, maven, REST

library-service spring-boot project using open-api, docker, maven, REST I used docker to run the project, as well as open-api to generate basic GET an

Nov 27, 2022
Comments
Owner
Victor Ramide da Costa Souza
Web Developer.
Victor Ramide da Costa Souza
Projeto para consulta de filmes na API data IMDB e construção de playlists.

Projeto IDP: Filmes API ✍️ API Requirements Must to have Comunicar com uma API externa (desenvolvida pelo colaborador ou por terceiros). Persistir dad

Sarah Andrade Toscano de Carvalho 2 Oct 9, 2022
The Quotation Management application is a API REST created using Spring Boot framework.

✅ Quotation Management API - Done ✅ About • Features • Setup • Technologies • Author • License ?? About The Quotation Management application is a API

Vanessa Swerts 6 Apr 29, 2022
Spring Boot JdbcTemplate example with SQL Server: CRUD Rest API using Spring Data JDBC, Spring Web MVC

Spring Boot JdbcTemplate example with SQL Server: Build CRUD Rest API Build a Spring Boot CRUD Rest API example that uses Spring Data Jdbc to make CRU

null 7 Dec 20, 2022
Uma API REST com funcionalidades de CRUD que simula um sistema de leilão 💰.

Leilão API REST Essa aplicação foi feita para ajudar aqueles que ainda estão com alguma dúvida, sobre o funcionamento de um API REST em Spring. Já que

Fábio Henrique 4 Feb 23, 2022
Drone - A service via REST API that allows clients to communicate with drones

Drone - A service via REST API that allows clients to communicate with drones (i.e. **dispatch controller**). The specific communication with the drone is outside the scope of this task.

Obinna Ogbonna 1 Jan 10, 2022
Spring Boot Login and Registration example with MySQL, JWT, Rest Api - Spring Boot Spring Security Login example

Spring Boot Login example with Spring Security, MySQL and JWT Appropriate Flow for User Login and Registration with JWT Spring Boot Rest Api Architect

null 58 Jan 5, 2023
Desafio Alura Challenge para backend. Criando uma API REST de controle de orçamento utilizando JAVA.

Desafio Alura Challenge para backend. Criando uma API REST de controle de orçamento utilizando JAVA.

Allan Cordeiro 1 Jun 16, 2022
Spring Boot REST API authentication best practices using JWT

Spring Boot REST API authentication best practices using JWT Token based API authentication with Spring Security and JWT (JSON web Token) Overview Thi

Prafful Lachhwani 34 Dec 22, 2022
See how simple it is to build a REST API with a database using Java and Spring Boot

Seu primeiro projeto Java Web no Spring Boot 2022 Veja como é simples construir uma API REST com banco de dados usando Java e Spring Boot Realização D

DevSuperior 74 Dec 26, 2022
Currency Exchange Rate Rest Api

Spring Boot Currency Exchange Project This is a currency exchange Rest Api application which is developed using Spring Boot Framework. How to Run This

null 1 Jan 21, 2022