Skip to content

tfm86/myfirstapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto: Gerenciamento de Usuários

Empresa: InovaTech Solutions
Projeto: Gerenciamento de Usuários
Autor: Tiago Fernandes
Cargo: Engenheiro de Software
Data: 08/12/2025
Versão: 1.0


📌 Resumo

O projeto Gerenciamento de Usuários foi desenvolvido em Java Spring Boot com PostgreSQL, aplicando boas práticas de engenharia de software para criar uma API RESTful de controle e administração de usuários.
A solução demonstra arquitetura modular, persistência robusta, testes automatizados e documentação interativa.


🎯 Objetivo

Fornecer uma API RESTful para operações de CRUD de usuários, garantindo:

  • Escalabilidade
  • Segurança
  • Facilidade de integração com outros sistemas corporativos

📌 Requisitos do Sistema

✅ Requisitos Funcionais

  • Cadastro de Usuário: permitir criar novos usuários com nome, e-mail e senha.
  • Listagem de Usuários: retornar todos os usuários cadastrados.
  • Busca por Nome: localizar usuários pelo atributo nameUser.
  • Exclusão de Usuário: remover usuários pelo identificador único (id).
  • Validação de Dados: garantir que informações obrigatórias estejam corretas.
  • Documentação Interativa: disponibilizar endpoints via Swagger/OpenAPI.

🔒 Requisitos Não Funcionais

  • Segurança: implementar autenticação e autorização (ex.: JWT).
  • Escalabilidade: suportar aumento de usuários e requisições sem perda de desempenho.
  • Performance: respostas da API em < 2 segundos em média.
  • Disponibilidade: sistema acessível 24/7.
  • Manutenibilidade: código modular e bem documentado.
  • Portabilidade: possibilidade de implantação em diferentes ambientes.
  • Testabilidade: cobertura de testes unitários e de integração.

🛠 Tecnologias Utilizadas

  • Java Spring Boot
  • PostgreSQL
  • Swagger/OpenAPI
  • JUnit
  • JSON

🏗 Arquitetura do Sistema

  • Controller → expõe endpoints REST
  • Service → regras de negócio
  • Repository → persistência via Spring Data JPA
  • Model → representação da entidade User

Diagrama Simplificado (ASCII)

                   +-------------------+
                   |      Cliente      |
                   | (Front-end / App) |
                   +---------+---------+
                             |
                             v
                   +-------------------+
                   |    Controller     |
                   | Recebe requisições|
                   +---------+---------+
                             |
                             v
                   +-------------------+
                   |      Service      |
                   | Regras de negócio |
                   +---------+---------+
                             |
                             v
                   +-------------------+
                   |    Repository     |
                   | Acesso ao banco   |
                   +---------+---------+
                             |
                             v
                   +-------------------+
                   |    PostgreSQL     |
                   | Banco de dados    |
                   +-------------------+

🌐 Endpoints RESTful

Método Endpoint Descrição
GET /users Lista todos os usuários
GET /users/{nameUser} Busca usuário pelo username
POST /users Cria novo usuário
DELETE /users/{id} Remove usuário por ID

📈 Diagramas UML de Sequência

1. Criar Usuário

Cliente        Controller        Service        Repository        PostgreSQL
   | POST /users    |               |               |                 |
   |--------------->|               |               |                 |
   |                | valida dados  |               |                 |
   |                |-------------->|               |                 |
   |                |               | aplica lógica |                 |
   |                |               |-------------->|                 |
   |                |               |               | INSERT usuário  |
   |                |               |               |---------------> |
   |                |               |               | <--- sucesso ---|
   |                |               | <--- entidade salva ------------|
   |                | <--- resposta JSON -----------------------------|
   | <--- 201 Created ------------------------------------------------|

2. Buscar Usuário

Cliente        Controller        Service        Repository        PostgreSQL
   | GET /users/{nameUser}          |               |                 |
   |--------------->|               |               |                 |
   |                | valida entrada|               |                 |
   |                |-------------->|               |                 |
   |                |               | consulta lógica|                |
   |                |               |-------------->|                 |
   |                |               |               | SELECT usuário  |
   |                |               |               |---------------> |
   |                |               |               | <--- resultado --|
   |                |               | <--- entidade encontrada -------|
   |                | <--- resposta JSON -----------------------------|
   | <--- 200 OK -----------------------------------------------------|

3. Excluir Usuário

Cliente        Controller        Service        Repository        PostgreSQL
   | DELETE /users/{id}             |               |                 |
   |--------------->|               |               |                 |
   |                | valida ID     |               |                 |
   |                |-------------->|               |                 |
   |                |               | verifica existência            |
   |                |               |-------------->|                 |
   |                |               |               | SELECT usuário  |
   |                |               |               |---------------> |
   |                |               |               | <--- resultado --|
   |                |               |               | DELETE usuário   |
   |                |               |               |---------------> |
   |                |               |               | <--- sucesso ---|
   |                |               | <--- confirmação --------------|
   |                | <--- resposta JSON -----------------------------|
   | <--- 200 OK -----------------------------------------------------|

👤 Diagrama UML de Caso de Uso

                +-------------------+
                |      Cliente      |
                | (Usuário Externo) |
                +---------+---------+
                          |
                          v
        +-----------------------------------+
        |     Gerenciamento de Usuários     |
        |-----------------------------------|
        |  (Casos de Uso)                   |
        |                                   |
        |  • Criar Usuário                  |
        |  • Listar Usuários                |
        |  • Buscar Usuário por Nome        |
        |  • Excluir Usuário                |
        +-----------------------------------+

✅ Resultados Obtidos

  • API funcional e documentada
  • Testes unitários e de integração validados
  • Persistência robusta com PostgreSQL
  • Arquitetura modular e escalável

🚀 Próximos Passos

  • Implementar autenticação e autorização (JWT)
  • Escalar para ambientes em nuvem
  • Adicionar monitoramento e métricas
  • Criar pipeline de CI/CD

🏁 Conclusão

O projeto Gerenciamento de Usuários atingiu seu objetivo principal ao disponibilizar uma API RESTful robusta para operações CRUD, com persistência confiável em PostgreSQL e boas práticas de arquitetura utilizando Java Spring Boot.

Os diagramas e estruturas apresentados fornecem uma visão clara do funcionamento interno do sistema, reforçando sua aplicabilidade em cenários reais que exigem gerenciamento eficiente de usuários e integração corporativa.

About

API RESTful de gerenciamento de usuários com Java Spring Boot e PostgreSQL

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages