👨💻 O que foi desenvolvido
Aqui você vai encontrar os detalhes de como foi estruturado este projeto e instruções para rodar.
Este projeto foi desenvolvido uma API e um banco de dados para a produção de conteúdo para um blog!
É uma aplicação em Node.js usando o pacote sequelize para fazer um CRUD de posts.
1. Foi desenvolvido os endpoints que estarão conectados ao banco de dados seguindo os princípios do REST;
2. Para fazer um post é necessário usuário e login, possui relacionamentos, **relação entre** `user` e `post`;
3. É necessário utilização das categorias para os posts, trabalhando, assim, a **relação de** `posts` para `categories` e de `categories` para `posts`.
🐋 Rodando no Docker vs Localmente
ℹ️ Rode os serviços
node
edb
com o comandodocker-compose up -d --build
.
-
Lembre-se de parar o
mysql
se estiver usando localmente na porta padrão (3306
), ou adapte, caso queria fazer uso da aplicação em containers; -
Esses serviços irão inicializar um container chamado
blogs_api
e outro chamadoblogs_api_db
; -
A partir daqui você pode rodar o container
blogs_api
via CLI ou abri-lo no VS Code;
ℹ️ Use o comando
docker exec -it blogs_api bash
.
- Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.
ℹ️ Instale as dependências [Caso existam] com
npm install
. (Instale dentro do container)
ℹ️ Instale as dependências [Caso existam] com
npm install
- ✨ Dica: Para rodar o projeto desta forma, obrigatoriamente você deve ter o
node
instalado em seu computador.
Como ter acesso ao projeto e instalar as dependências
1. Entre na pasta do repositório que você acabou de clonar ou fazer o download do arquivo zip:
* `cd pasta-do-repositório`
2. Instale as dependências:
*`npm install`
3. Suba os imagens do servidor node e do banco de do docker-compose com o comando:
*`docker-compose up -d --build
<br />
👀 REST
Tenha em mente que todas as "respostas" devem respeitar os status do protocolo HTTP com base no que o REST prega.
Alguns exemplos:
-
Requisições que precisam de token mas não o receberam devem retornar um código de
status 401
; -
Requisições que não seguem o formato pedido pelo servidor devem retornar um código de
status 400
; -
Um problema inesperado no servidor deve retornar um código de
status 500
; -
Um acesso ao criar um recurso, no nosso caso usuário ou post, deve retornar um código de
status 201
.
🎲 Entidades
O seu projeto deverá usar o ORM Sequelize
para criar e atualizar o seu banco de dados.
Os primeiros requisitos do projeto devem orientar a produção de suas migrations para gerar:
-
Uma tabela chamada users, contendo dados com a seguinte estrutura:
id display_name email password image 1 Brett Wiltshire brett@email.com // tem quer ser único 123456 http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png -
Uma tabela chamada categories, contendo dados com a seguinte estrutura:
id name 18 News -
Uma tabela chamada blog_posts, contendo dados com a seguinte estrutura:
id title content user_id published updated 21 Latest updates, August 1st The whole text for the blog post goes here in this key 14 // Chave estrangeira, referenciando o id de users
2011-08-01T19:58:00.000Z 2011-08-01T19:58:51.947Z -
Uma tabela chamada PostCategories, contendo uma chave primária composta utilizando os dois atributos da estrutura:
post_id category_id 50 // Chave primária e estrangeira, referenciando o id de BlogPosts
20 // Chave primária e estrangeira, referenciando o id de Categories
Os dados acima são fictícios, e estão aqui apenas como exemplo
- Deleta o banco de dados:
"drop": "npx sequelize-cli db:drop"
- Cria o banco e gera as tabelas:
"prestart": "npx sequelize-cli db:create && npx sequelize-cli db:migrate"
- Insere dados/Popula a tabela:
"seed": "npx sequelize-cli db:seed:all"