Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 7 days 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 (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-10-25T22:00:38.000Z (about 1 year ago)
- Last Synced: 2023-10-26T22:34:12.004Z (about 1 year 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
![img.png](header.png)
# Todo List REST API
![Java](https://img.shields.io/badge/java-%23ED8B00.svg?style=for-the-badge&logo=openjdk&logoColor=white)![Spring](https://img.shields.io/badge/spring-%236DB33F.svg?style=for-the-badge&logo=spring&logoColor=white)![Swagger](https://img.shields.io/badge/-Swagger-%23Clojure?style=for-the-badge&logo=swagger&logoColor=white)![Render](https://img.shields.io/badge/Render-%46E3B7.svg?style=for-the-badge&logo=render&logoColor=white)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.