Nesse desafio, você deverá criar uma aplicação para treinar o que aprendeu até agora no Node.js!
Nesse desafio você irá trabalhar mais a fundo com middlewares no Express. Dessa forma você será capaz de fixar mais ainda os conhecimentos obtidos até agora.
O código utilizado será o mesmo do Desafio 01, com algumas implementações adicionais referentes aos middlewares.
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
title
edeadline
de umtodo
existente; - Marcar um
todo
como feito; - Excluir um
todo
;
Tudo isso para cada usuário em específico. Além disso, dessa vez teremos um plano grátis onde o usuário só pode criar até dez todos e um plano Pro que irá permitir criar todos ilimitados, isso tudo usando middlewares para fazer as validações necessárias.
- 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
title
edeadline
de umtodo
existente; - Deve ser possível marcar um
todo
como feito; - Deve ser possível deletar um
todo
;
- Deve ser possível listar os
usuarios
cadastrados;
- Não deve ser possível cadastrar um usuário com o mesmo
username
; - Não deve ser possível cadastrar um
todo
para um usuário inexistente; - Não deve ser possível listar os
todos
de um usuário inexistente; - Não deve ser possível alterar o
title
edeadline
de umtodo
inexistente; - Não deve ser possível marcar um
todo
inexistente como feito; - Não deve ser possível deletar um
todo
inexistente; - Não deve ser possível incluir mais de 10
todos
para um usuário que não sejapro
; - Não deve ser possível alterar um
todo
de um usuário que não seja o dono; - Não deve ser possível marcar um
todo
de um usuário que não seja o dono; - Não deve ser possível deletar um
todo
de um usuário que não seja o dono; - Não deve ser possível alterar um
todo
não existente; - Não deve ser possível marcar um
todo
não existente; - Não deve ser possível deletar um
todo
não existente;
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 |
PATCH | http://{apiBaseUrl}/users/:id/pro | Tornar uma conta de usuário Pró |
GET | http://{apiBaseUrl}/users | Lista todos os usuários |
GET | http://{apiBaseUrl}/users/:id | Lista um usuário pelo ID |
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