https://github.com/thenriquedb/todo-list-with-spring
API Rest para gerenciamento de lista de tarefas, construída em Java com o framework Spring Boot.
https://github.com/thenriquedb/todo-list-with-spring
crud java openapi3 spring spring-boot swagger
Last synced: 4 months ago
JSON representation
API Rest para gerenciamento de lista de tarefas, construída em Java com o framework Spring Boot.
- Host: GitHub
- URL: https://github.com/thenriquedb/todo-list-with-spring
- Owner: thenriquedb
- Created: 2023-10-09T23:55:51.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-10-25T22:00:38.000Z (over 1 year ago)
- Last Synced: 2025-01-02T05:41:45.598Z (6 months ago)
- Topics: crud, java, openapi3, spring, spring-boot, swagger
- Language: Java
- Homepage: https://todolist-api-icfi.onrender.com/swagger-ui/index.html
- Size: 28.5 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

# Todo List REST API
Este projeto foi desenvolvido como parte do curso gratuito de Java oferecido pela Rocketseat. Trata-se de uma API Rest para gerenciamento de lista de tarefas, construída em Java com o framework Spring Boot.
## Características do Projeto
- **Separação de Responsabilidades**: Implementamos uma estrutura de código que segue as boas práticas de separação de responsabilidades entre controllers e repositórios. Isso torna o código mais organizado e de fácil manutenção.
- **Filtro para Autenticação e Validação**: Criamos um filtro para a rota `/tasks` que garante a autenticação do usuário e valida as solicitações. Isso aumenta a segurança e a integridade dos dados.
- **Error Handler**: Desenvolvemos um mecanismo de tratamento de erros para fornecer respostas claras e adequadas em caso de problemas durante as solicitações.### Requisitos
- **Java >= 17**;
- **Maven**;
- **Rest client**;### Depedências
- **Spring JPA**;
- **Lombok**;
- **BCrypt**;
- **H2 Database**;## API
### POST ``/users``
**Request body**
```json
{
"name": string,
"username": string,
"password": string
}
```**Response**
```json
{
"id": UUID,
"username": string,
"name": string,
"createdAt": YYYY-MM-DDThh:mm:ss
}
```### POST ``/tasks``
**Header**
```
Authorization: Basic Base64 (username:password)
```**Request**
```json
{
"title": string,
"description": string,
"priority": 0 | 1 | 2 | 3 | 4,
"startAt": YYYY-MM-DDThh:mm:ss,
"endAt": YYYY-MM-DDThh:mm:ss
}```
**Response**```json
{
"id": UUID,
"title": string,
"description": string,
"priority": 0 | 1 | 2 | 3 | 4,
"startAt": YYYY-MM-DDThh:mm:ss,
"endAt": YYYY-MM-DDThh:mm:ss,
"createdAt": YYYY-MM-DDThh:mm:ss,
"userId": UUID
}
```### POST ``/tasks``
**Header**
```
Authorization: Basic Base64 (username:password)
```
**Response**```json
{
"id": UUID,
"title": string,
"description": string,
"priority": 0 | 1 | 2 | 3 | 4,
"startAt": YYYY-MM-DDThh:mm:ss,
"endAt": YYYY-MM-DDThh:mm:ss,
"createdAt": YYYY-MM-DDThh:mm:ss,
"userId": UUID
}[]
```### PUT ``/tasks/{id}``
**Header**
```
Authorization: Basic Base64 (username:password)
```**Response**
```json
{
"id": UUID,
"title": string,
"description": string,
"priority": 0 | 1 | 2 | 3 | 4,
"startAt": YYYY-MM-DDThh:mm:ss,
"endAt": YYYY-MM-DDThh:mm:ss
}
```
**Response**```json
{
"id": UUID,
"title": string,
"description": string,
"priority": 0 | 1 | 2 | 3 | 4,
"startAt": YYYY-MM-DDThh:mm:ss,
"endAt": YYYY-MM-DDThh:mm:ss,
"createdAt": YYYY-MM-DDThh:mm:ss,
"userId": UUID
}
```## Melhorias
- [X] Adicionar endpoint para excluir tarefa;
- [X] Documentar a API utilizando Swagger;
- [ ] Adicionar testes para cada endpoint;
- [ ] Substituir o H2 para o Postgress;
- [ ] Melhorar o processo de autenticação.