- Sobre o Projeto
- Objetivos
- Lista de objetivos
- 1 - Endpoint POST
/user
- 2 - Endpoint POST
/login
- 3 - Endpoint GET
/user
- 4 - Endpoint GET
/user/:id
- 5 - Endpoint POST
/categories
- 6 - Endpoint GET
/categories
- 7 - Endpoint POST
/post
- 8 - Endpoint GET
/post
- 9 - Endpoint GET
post/:id
- 10 - Endpoint PUT
/post/:id
- 11 - Endpoint DELETE
post/:id
- 12 - Endpoint DELETE
/user/me
- 13 - Endpoint GET
post/search?q=:searchTerm
- 1 - Endpoint POST
- Lista de objetivos
- Implementações Futuras
Esse projeto consiste na construição de um back-end usando ORM
com o pacote sequelize
do npm
, e será capaz de:
- Criar e associar tabelas usando
models
dosequelize
; - Construir endpoints para consumir os models que criar ;
- Fazer um
CRUD
com oORM
; - Observação dos princípios para criação de uma RestFul API.
- O projeto requer o uso das seguintes variáveis de ambiente para o devido funcionamento:
host: process.env.HOSTNAME
user: process.env.MYSQL_USER
password: process.env.MYSQL_PASSWORD
jwt_secret: process.env.JWT_SECRET
Desenvolver uma aplicação em Node.js
usando o pacote sequelize
para fazer um CRUD
de posts.
Para fazer um post é necessário usuário e login, portanto será trabalhada a relação entre user
e post
. Também será necessário a utilização de categorias para seus posts, assim trabalhando a relação de posts
para categorias
e de categorias
para posts
.
- Possibilita a adição de um novo usuário ao banco de dados;
- Estrutura da requisição:
{ "displayName": "Jack Johnson", // length > 7 "email": "jj@email.com", // único e será validado "password": "123456", // length === 6 "image": "http://link-da-imagem.png" }
- A criação de usuário com sucesso deve responder com um token (sucesso) ou um erro personalizado (falha).
- Realiza o login caso os dados sejam passados corretamente;
- Estrutura da requisição:
{ "email": "jj@email.com", "password": "123456", }
- O login com sucesso deve responder com um token (sucesso) ou um erro personalizado (falha).
- Lista os dados de todos os usuários cadastrados;
- A requisição deve ser feita com um token recebido ao efetuar o login ou criar um novo usuário;
- Estrutura do retorno:
[ { "id": "1", "displayName": "Jack Johnson", "email": "jj@email.com", "image": "http://link-da-imagem.png" }, { "id": "1", "displayName": "Bruce Dickinson ", "email": "bd@ironmail.com", "image": "http://link-da-imagem.png" }, ]
- A consulta com sucesso deve responder com os dados dos usuários (sucesso) ou um erro personalizado (falha).
- Lista os dados do usuário cujo respectivo :id é repassado através da URL;
- A requisição deve ser feita com um token recebido ao efetuar o login ou criar um novo usuário;
- Estrutura do retorno:
[ { "id": "1", "displayName": "Jack Johnson", "email": "jj@email.com", "image": "http://link-da-imagem.png" } ]
- A consulta com sucesso deve responder com os dados do usuário (sucesso) ou um erro personalizado (falha).
- Permite criar uma nova categoria de posts;
- A requisição deve ser feita com um token recebido ao efetuar o login ou criar um novo usuário;
- Estrutura da requisição:
[ { "name": "Inovação" } ]
- O endpoint deve retornar o id e nome da categoria criada (sucesso) ou um erro personalizado (falha).
- Consulta todas as categorias disponíveis;
- A requisição deve ser feita com um token recebido ao efetuar o login ou criar um novo usuário;
- Estrutura do retorno:
[ { "id": 1, "name": "Escola" }, { "id": 2, "name": "Inovação" } ]
- O endpoint deve retornar um array com os dados das categorias criadas (sucesso) ou um erro personalizado (falha).
- Cria um novo post;
- A requisição deve ser feita com um token recebido ao efetuar o login ou criar um novo usuário;
- Estrutura da requisição:
{ "title": "PERDEU TUDO!!1!", "content": "Conheça o drama de João José", "categoryIds": [1, 2] }
- O endpoint deve retornar um objeto com o id do post, o id do usuário que o criou além do título e conteúdo do post (sucesso) ou um erro personalizado (falha).
-
Consulta todos os posts disponíveis;
-
A requisição deve ser feita com um token recebido ao efetuar o login ou criar um novo usuário;
-
Estrutura do retorno:
[ { "id": 1, "title": "Post do Ano", "content": "Melhor post do ano", "userId": 1, "published": "2011-08-01T19:58:00.000Z", "updated": "2011-08-01T19:58:51.000Z", "user": { "id": 1, "displayName": "Jade Picon", "email": "jp@gmail.com", "image": "https:link-da-imagem.jpg" }, "categories": [ { "id": 1, "name": "Inovação" } ] }, ]
-
O retorno deve seguir o objeto json especificado (sucesso) ou um erro personalizado (falha).
- Consulta o post cujo seja especificado como parâmetro na URL;
- A requisição deve ser feita com um token recebido ao efetuar o login ou criar um novo usuário;
- Estrutura do retorno:
{ "id": 1, "title": "Post do Ano", "content": "Melhor post do ano", "userId": 1, "published": "2011-08-01T19:58:00.000Z", "updated": "2011-08-01T19:58:51.000Z", "user": { "id": 1, "displayName": "Galvão Bueno", "email": "gb@gmail.com", "image": "https://upload.imagem.jpg" }, "categories": [ { "id": 1, "name": "Inovação" } ] }
- O retorno deve seguir o objeto json especificado (sucesso) ou um erro personalizado (falha).
- Permite a edição do post cujo seja especificado como parâmetro na URL;
- OBS: Somente o autor do post pode editar o post;
- A requisição deve ser feita com um token recebido ao efetuar o login ou criar um novo usuário;
- Estrutura da requisição:
{ "title": "RECUPEROU TUDO!!!11!", "content": "João José dá a volta por cima investindo em NFT e bitcoin!" }
- O retorno mostrar o título e conteúdo do post atualizados, além do id do autor e das categorias do post (sucesso) ou um erro personalizado (falha).
- Permite a deleção do post cujo seja especificado como parâmetro na URL;
- OBS: Somente o autor do post pode deletar o post;
- A requisição deve ser feita com um token recebido ao efetuar o login ou criar um novo usuário;
- A deleção será confirmada com o código de status 204: No Content (sucesso) ou retornará um erro personalizado (falha).
- A requisição deve ser feita com um token recebido ao efetuar o login ou criar um novo usuário;
- O usuário será confirmado através do token repassado e sua deleção será confirmada com o código de status 204: No Content (sucesso) ou retornará um erro personalizado (falha).
- A requisição deve ser feita com um token recebido ao efetuar o login ou criar um novo usuário;
- Estrutura do retorno:
{ "id": 1, "title": "Post do Ano", "content": "Melhor post do ano", "userId": 1, "published": "2011-08-01T19:58:00.000Z", "updated": "2011-08-01T19:58:51.000Z", "user": { "id": 1, "displayName": "Galvão Bueno", "email": "gb@gmail.com", "image": "https://upload.imagem.jpg" }, "categories": [ { "id": 1, "name": "Inovação" } ] }
- O retorno será um array de posts que contenham no título ou conteúdo o termo buscado (sucesso) ou retornará um erro personalizado (falha).
- Criação de uma aplicação Front-End estilizada para consumir a API.