Skip to content

Este é um projeto de API REST sobre empréstimos que adota os princípios da Arquitetura Limpa para garantir uma estrutura modular e altamente testável utilizando o Spring Framework.

Notifications You must be signed in to change notification settings

CaioZamana/loans_project_springboot3.2.4_java21_version-user-master

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aplicação API RESTFul de um sistema de empréstimos

Loans Project with Clean Architecture

Clean Architecture

Este projeto adota os princípios da Arquitetura Limpa (Clean Architecture) para garantir uma estrutura modular e altamente testável utilizando o Spring Framework.

Documentation of API Rest with Swagger UI

Swagger UI

Fluxo de requisições da Arquitetura RESTful

A imagem ilustra o fluxo de requisições em uma aplicação web API Rest com Spring Framework, detalhando as etapas envolvidas no processamento de uma requisição HTTP. request-flow-api-rest.jpg

Abaixo está uma visão geral do fluxo de requisições na arquitetura:

  1. Cliente:

    • O cliente envia requisições HTTP (POST, GET, PUT, PATCH, DELETE) para a API RESTful.
  2. Camada de requisições (Controller):

    • Os controladores (Controllers) recebem as requisições HTTP do cliente e as direcionam para os respectivos métodos de manipulação de recursos.
    • Cada controlador define os endpoints da API e mapeia as requisições para métodos específicos.
  3. Camada de transferência/conversão (DTO):

    • Antes de processar as requisições, os dados recebidos do cliente são convertidos para objetos de transferência de dados (DTOs).
    • Os DTOs são utilizados para transferir dados entre a camada dos controladores (Controllers) e a camada de serviço, encapsulando apenas as informações relevantes.
  4. Camada Lógica de Negócio (Service):

    • A camada de serviço implementa a lógica de negócio da aplicação e processa as requisições, realizando as operações desejadas.
    • Ela inclui validações, cálculos, acesso a serviços externos, entre outras operações específicas do domínio da aplicação.
  5. Camada de Entidade(Entity):

    • A camada de entidade define os objetos de dados que representam as entidades do domínio da aplicação.
    • As entidades mapeiam diretamente para as tabelas do banco de dados em sistemas de persistência relacionais.
    • Elas encapsulam o estado e o comportamento dos objetos de negócio da aplicação.
  6. Camada de Persistência (Repository):

    • Após a lógica de negócio processar a requisição, ela pode interagir com a camada de persistência para armazenar ou recuperar dados no banco de dados.
    • Os repositórios fornecem acesso aos dados armazenados e utilizam tecnologias como ORM (Object-Relational Mapping) ou JPA (Java Persistence API).
  7. Resposta (Response):

    • Após a conclusão da operação, a camada de serviço retorna uma resposta para o controlador, que constrói uma resposta HTTP apropriada e a envia de volta para o cliente.

Diagrama de Classes da Aplicação de Empréstimos (UML Class Diagram Loan Application)

uml-diagram-class.jpg

Estrutura de Pacotes

A seguir, descrevemos a estrutura de pacotes:

  • controller: Este pacote contém as classes que atuam como controladores, responsáveis por manipular as requisições HTTP e direcioná-las para o serviço apropriado.
  • documentation: Aqui estão arquivos relacionados às especificações de API do sistema, neste caso utilizando o Swagger.
  • dto: As classes DTO (Data Transfer Object) residem neste pacote. Elas são utilizadas para transferir dados entre o cliente e o servidor, fornecendo uma abstração dos detalhes de implementação interna.
  • Enum: Enumerações importantes para o funcionamento do sistema são definidas neste pacote.
  • exception: Classes de exceção personalizadas são colocadas aqui. Elas são usadas para lidar com exceções específicas do domínio ou da aplicação.
  • model: Este pacote contém as classes de modelo, que representam as entidades principais do domínio da aplicação.
  • repository: Aqui são definidas as interfaces de repositório, que fornecem métodos para acessar e manipular os dados no banco de dados.
  • security: Contém as configurações de segurança, como autenticação e autorização.
  • service: As classes de serviço residem neste pacote. Elas encapsulam a lógica de negócios da aplicação e são responsáveis por coordenar as operações entre os controladores e os repositórios.

Contato:

Caio B. Zamana
Software Engineer

About

Este é um projeto de API REST sobre empréstimos que adota os princípios da Arquitetura Limpa para garantir uma estrutura modular e altamente testável utilizando o Spring Framework.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages