Nesse desafio, você deverá criar uma aplicação para treinar o que aprendeu até agora no Node.js!
Essa será uma aplicação para gerenciar tarefas (em inglês todos).
Será permitida a criação de um usuário com name e username, bem como fazer o CRUD de todos:
- Criar um novo
todo; - Listar todos os
todos; - Alterar o
titleedeadlinede umtodoexistente; - Marcar um
todocomo feito; - Excluir um
todo;
Tudo isso para cada usuário em específico (o username será passado pelo header).
- Deve ser possível criar um novo
usuário; - Deve ser possível criar um novo
todo; - Deve ser possível listar os
todos; - Deve ser possível alterar o
titleedeadlinede umtodoexistente; - Deve ser possível marcar um
todocomo feito; - Deve ser possível deletar um
todo;
- Deve ser possível listar os
usuarioscadastrados;
- Não deve ser possível cadastrar um usuário com o mesmo
username; - Não deve ser possível cadastrar um
todopara um usuário inexistente; - Não deve ser possível listar os
todosde um usuário inexistente; - Não deve ser possível alterar o
titleedeadlinede umtodoinexistente; - Não deve ser possível marcar um
todoinexistente como feito; - Não deve ser possível deletar um
todoinexistente;
Detalhamento das rotas da API
Gerênciamento de usuários
Rota: /users
| Método | Rota | Descrição |
|---|---|---|
| POST | http://{apiBaseUrl}/users | Cria um novo usuário |
| GET | http://{apiBaseUrl}/users | Lista todos os usuários |
Json para criação de um novo usuário
{
"name": "Nome Completo do Usuário",
"username": "login de acesso"
}
Json retornado após a criação de um novo usuário
{
"id": "ad1a5496-361e-4462-9c67-180ce22e0807",
"name": "Nome Completo do Usuário",
"username": "login de acesso",
"todos": []
}
Gerênciamento de tarefas
Rota: /todos
| Método | Rota | Descrição |
|---|---|---|
| POST | http://{apiBaseUrl}/todos | Cria um novo todo |
| GET | http://{apiBaseUrl}/todos | Lista todos os todos |
| PUT | http://{apiBaseUrl}/todos/:id | Altera o title e o deadline de um todo |
| PATCH | http://{apiBaseUrl}/todos/:id/done | Altera o status de um todo para done |
| DELETE | http://{apiBaseUrl}/todos/:id | Deleta um todo |
Json para criação de uma nova tarefa "TODO"
{
"title": "Nome da tarefa"
}
Json retornado após a criação de uma nova tarefa "TODO"
{
"id": "fcfe9ff4-bc61-4127-a761-69edb64ff047",
"title": "Nome da tarefa",
"done": false,
"deadline": null,
"created_at": "2022-10-24T16:15:28.749Z"
}
# Baixar as dependências
npm install
# Executar o servidor
npm run dev
# Executar os testes
npm run test