API RESTful para gerenciamento de tarefas, desenvolvida com Java e Spring Boot.
- Java 21
- Spring Boot 3.4
- Spring Data JPA
- Spring Validation
- PostgreSQL
- Springdoc OpenAPI (Swagger)
- JUnit 5 + Mockito
- Maven
- ✅ Criar tarefas
- ✅ Listar todas as tarefas
- ✅ Buscar tarefa por ID
- ✅ Atualizar tarefa
- ✅ Deletar tarefa
- ✅ Validação de dados de entrada
- ✅ Tratamento global de erros
O projeto segue uma arquitetura em camadas:
Controller → recebe e responde requisições HTTP
Service → contém as regras de negócio
Repository → comunicação com o banco de dados
src/
├── controller/
│ └── TarefaController.java
├── service/
│ └── TarefaService.java
├── repository/
│ └── TarefaRepository.java
├── model/
│ └── Tarefa.java
├── dto/
│ ├── TarefaRequestDTO.java
│ ├── TarefaResponseDTO.java
│ └── ErroResponseDTO.java
└── exception/
├── TarefaNaoEncontradaException.java
└── GlobalExceptionHandler.java
- Java 21+
- Maven 3.8+
- PostgreSQL 15+
git clone https://github.com/Baister/todolist.git
cd todolistCrie um banco de dados PostgreSQL chamado todolist:
CREATE DATABASE todolist;Edite o arquivo src/main/resources/application.properties com suas credenciais:
spring.datasource.url=jdbc:postgresql://localhost:5432/todolist
spring.datasource.username=postgres
spring.datasource.password=SUA_SENHAmvn spring-boot:runA API estará disponível em http://localhost:8080.
Com a aplicação rodando, acesse a documentação interativa pelo Swagger:
http://localhost:8080/swagger-ui/index.html
| Método | Endpoint | Descrição |
|---|---|---|
GET |
/tarefas |
Lista todas as tarefas |
GET |
/tarefas/{id} |
Busca uma tarefa pelo ID |
POST |
/tarefas |
Cria uma nova tarefa |
PUT |
/tarefas/{id} |
Atualiza uma tarefa |
DELETE |
/tarefas/{id} |
Remove uma tarefa |
Request:
{
"titulo": "Estudar Spring Boot",
"descricao": "Aula sobre DTOs e validações"
}Response — 201 Created:
{
"id": 1,
"titulo": "Estudar Spring Boot",
"descricao": "Aula sobre DTOs e validações",
"concluida": false
}Response — 404 Not Found:
{
"status": 404,
"mensagem": "Tarefa não encontrada com id: 999"
}Para executar os testes automatizados:
mvn testDesenvolvido por Gustavo Baister