Skip to content

API em Java do projeto Anota Aí desenvolvida para a matéria de Tópicos Integradores do Curso Superior em Sistemas de Informação

Notifications You must be signed in to change notification settings

DanielSouza2005/anotaai-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🪪 AnotaAí API

💡 Sobre

RESTful API desenvolvida para o sistema de anotações e gerenciamento de contatos e empresas, com autenticação e boas práticas de desenvolvimento backend em Java.

🖥️ Tecnologias usadas

🛠️ Funcionalidades do Projeto

  • 📇 CRUD de Contatos: Endpoints completos para criar, listar, atualizar e excluir contatos.
  • 🏢 CRUD de Empresas: Cadastro e gerenciamento de empresas associadas aos contatos.
  • 👤 CRUD de Usuários: Gestão dos usuários do sistema com autenticação segura.
  • 📄 Paginação e Ordenação: Listagens otimizadas com suporte a paginação e ordenação dinâmica.
  • Validações: Validação de dados com Bean Validation para garantir a integridade das requisições.
  • ⚠️ Tratamento de Erros: Respostas padronizadas com mensagens claras para erros comuns.
  • 🔐 Criptografia: Senhas criptografadas com segurança utilizando BCrypt.
  • 🔑 Autenticação JWT: Autenticação segura baseada em token JWT.
  • 📚 Documentação com Spring Docs: Interface automática e interativa para explorar os endpoints da API.

🧪 Tecnologias utilizadas nos testes

  • ⚙️ Spring Boot Test – Estrutura principal de testes do Spring.
  • 🌐 MockMvc – Simula requisições HTTP para os controllers.
  • 🎭 Mockito (@MockitoBean) – Mocka dependências como o UsuarioRepository e BCryptPasswordEncoder.
  • 📦 JacksonTester – Serializa e desserializa objetos JSON nos testes.
  • 🧪 JUnit 5 – Framework de testes usado com anotações como @Test e @DisplayName.

📚 Documentação dos Endpoints

🔐 Autenticação

  • POST /login

Descrição: Autentica um usuário e retorna um token JWT para acesso aos endpoints protegidos. Requisição:

  {
    "email": "[email protected]", 
    "senha": "senha123" 
  }

Resposta:

  {
    "token": "jwt-token-aqui"
  }

🔐 Nota: Todos os endpoints (exceto /login e POST /usuarios) requerem um token JWT válido no cabeçalho Authorization no formato Bearer {token}.

👤 Usuários

  • POST /usuarios

Descrição: Cria um novo usuário no sistema. Requisição:

  {
    "nome": "Nome do Usuário", 
    "email": "[email protected]", 
    "senha": "senha123" 
    }

Resposta: Detalhes do usuário criado.​

  • GET /usuarios

Descrição: Lista todos os usuários com suporte a paginação e ordenação.

Parâmetros de Query:

page: Número da página (opcional).

size: Quantidade de registros por página (opcional).

sort: Campo para ordenação (opcional).

  • GET /usuarios/{id}

Descrição: Retorna os detalhes de um usuário específico.​

  • PUT /usuarios/{id}

Descrição: Atualiza as informações de um usuário existente.​

  • DELETE /usuarios/{id}

Descrição: Remove um usuário do sistema.​

📇 Contatos

  • POST /contatos

Descrição: Cria um novo contato associado a uma empresa (não obrigatório).

Requisição:

  {
      "nome": "Nome do Contato", 
      "email": "[email protected]", 
      "telefone": "123456789", 
      "empresaId": 1 
  }

Resposta: Detalhes do contato criado.​

  • GET /contatos

Descrição: Lista todos os contatos com suporte a paginação e ordenação.​

  • GET /contatos/{id}

Descrição: Retorna os detalhes de um contato específico.​

  • PUT /contatos/{id}

Descrição: Atualiza as informações de um contato existente.​

  • DELETE /contatos/{id}

Descrição: Remove um contato do sistema.​

🏢 Empresas

  • POST /empresas

Descrição: Cria uma nova empresa.

Requisição:

  {
      "nome": "Nome da Empresa",
      "cnpj": "12.345.678/0001-99" 
  }

Resposta: Detalhes da empresa criada.​

  • GET /empresas

Descrição: Lista todas as empresas com suporte a paginação e ordenação.​

  • GET /empresas/{id}

Descrição: Retorna os detalhes de uma empresa específica.​

  • PUT /empresas/{id}

Descrição: Atualiza as informações de uma empresa existente.​

  • DELETE /empresas/{id}

Descrição: Remove uma empresa do sistema.​

About

API em Java do projeto Anota Aí desenvolvida para a matéria de Tópicos Integradores do Curso Superior em Sistemas de Informação

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published