Skip to content

TiagoCoder2022/spring-cep-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spring CEP API

📌 Descrição do Projeto

Este projeto é uma API REST desenvolvida com Spring Boot para o gerenciamento de clientes com integração automática de endereços via CEP, utilizando a API pública ViaCEP.

A aplicação segue boas práticas de arquitetura e design, aplicando princípios de Clean Code, SOLID e o padrão Strategy, garantindo um código organizado, escalável e de fácil manutenção. Sempre que um cliente é cadastrado ou atualizado, o sistema verifica se o endereço já existe na base de dados; caso contrário, realiza a consulta externa ao ViaCEP e persiste o endereço localmente, evitando chamadas desnecessárias.

O projeto foi desenvolvido com foco em simular um cenário real de APIs corporativas, sendo ideal para estudos, portfólio e como base para evoluções futuras, incluindo deploy em ambientes cloud como a AWS.

🏗️ Arquitetura e Conceitos Aplicados

API RESTful

  • Separação de responsabilidades (Controller, Service, Repository)

  • Padrão de Projeto Strategy

  • Injeção de Dependências

  • Integração com serviço externo (ViaCEP)

  • Reutilização de dados de endereço

  • Boas práticas de nomenclatura e organização de pacotes

🔧 Tecnologias Utilizadas

  • Java

  • Spring Boot

  • Spring Data JPA

  • Maven

  • API ViaCEP

  • Banco de dados relacional (H2 / outro compatível)

  • REST

🚀 Funcionalidades

  • Cadastro de clientes

  • Atualização de clientes

  • Exclusão de clientes

  • Consulta de clientes por ID

  • Listagem de clientes

  • Consulta automática de endereço via CEP

  • Persistência de endereços para evitar chamadas repetidas à API externa

📮 Endpoints Principais

Clientes

GET /clientes → Lista todos os clientes

GET /clientes/{id} → Busca cliente por ID

POST /clientes → Cadastra um novo cliente

PUT /clientes/{id} → Atualiza um cliente existente

DELETE /clientes/{id} → Remove um cliente

🧪 Exemplo de Payload (POST /clientes)

{
  "nome": "João Silva",
  "endereco": {
  "cep": "01001000"
  }
}

⚙️ Como Executar o Projeto

  1. Clone o repositório: git clone https://github.com/seu-usuario/spring-cep-api.git
  2. Acesse o diretório do projeto: cd spring-cep-api
  3. Execute a aplicação: ./mvnw spring-boot:run ou mvn spring-boot:run
  4. A API estará disponível em: http://localhost:8080

🔮 Possíveis Evoluções

  • Cache de CEP com Spring Cache

  • Tratamento global de exceções (@ControllerAdvice)

  • Criação de DTOs

  • Validação de dados com Bean Validation

  • Testes unitários e de integração

  • Autenticação e autorização (Spring Security)

  • Deploy em AWS (EC2, RDS, ECS ou Elastic Beanstalk)

👨‍💻 Autor

Desenvolvido por Tiago Alves

Projeto criado com foco em aprendizado, boas práticas e portfólio profissional.

📄 Licença

Este projeto é livre para uso educacional e demonstração.

About

API REST desenvolvida com Spring Boot que realiza o gerenciamento de clientes com integração automática de endereços via CEP, utilizando a API pública ViaCEP.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages