/project-blogs-api

Projeto 26 - API para a produção de conteúdo para um blog.

Primary LanguageJavaScript

📝 Projeto Blogs API

blog

📄 Sobre

Foi desenvolvido uma API e um banco de dados para a produção de conteúdo para um blog!

📋 Execute o projeto em sua máquina

Clone o repositório:

git clone git@github.com:Jayromberg/project-blogs-api.git
🐋 Rodando no Docker vs Localmente

👉 Com Docker

⚠️ Antes de começar, seu docker-compose precisa estar na versão 1.29 ou superior. Veja aqui ou na documentação como instalá-lo. No primeiro artigo, você pode substituir onde está com 1.26.0 por 1.29.2.

ℹ️ Rode os serviços node e db com o comando docker-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 chamado blogs_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)

  • ⚠️ Atenção: Caso opte por utilizar o Docker, TODOS os comandos disponíveis no package.json (npm start, npm test, npm run dev, ...) devem ser executados DENTRO do container, ou seja, no terminal que aparece após a execução do comando docker exec citado acima.

  • ⚠️ Atenção: O git dentro do container não vem configurado com suas credenciais. Ou faça os commits fora do container, ou configure as suas credenciais do git dentro do container.

  • ⚠️ Atenção: Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador.

  • Dica: A extensão Remote - Containers (que estará na seção de extensões recomendadas do VS Code) é indicada para que você possa desenvolver sua aplicação no container Docker direto no VS Code, como você faz com seus arquivos locais.

sequelize test


👉 Sem Docker

ℹ️ Instale as dependências [Caso existam] com npm install

  • ⚠️ Atenção: Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador.

  • ✨ Dica: Para rodar o projeto desta forma, obrigatoriamente você deve ter o node instalado em seu computador.

  • ✨ Dica: O avaliador espera que a versão do node utilizada seja a 16.


👨🏻‍💻 Habilidades

  • Endpoints que estão conectados com o banco de dados seguindo os princípios do REST;
  • Criar uma API RESTful utilizando a arquitetura MSC (Model-Service-Controller);
  • Aplicação em Node.js usando o pacote sequelize para fazer um CRUD de posts;
  • Transactions: Uma transação simboliza uma unidade de trabalho indivisível executada do banco de dados de forma independente de outras transações;
  • Validar dados das requisições com a biblioteca Joi.

🔎 Rotas

Login

POST /login
• Se o login for feito com sucesso retorna um token para o usuário.
• O endpoint deve receber a seguinte estrutura, exemplo:
{
  "email": "lewishamilton@gmail.com",
  "password": "123456"
}

User

POST /user
• Cadastra um novo usuário, permitindo apenas um email válido, gerando um token.
• O endpoint deve receber a seguinte estrutura, exemplo:
{
  "displayName": "Brett Wiltshire",
  "email": "brett@email.com",
  "password": "123456",
  "image": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png"
  // a imagem não é obrigatória
}
GET /user
• Traz todos users do banco de dados.
• Valida o token - req.authorization.
GET /user/:id
• Traz um user por id do banco de dados.
• Valida o token - req.authorization.
DELETE /user/me
• Deleta o usuário logado.
• Valida o token - req.authorization.

Categories

POST /categories
• Cadastra uma nova categoria.
• Valida o token - req.authorization.
• O endpoint deve receber a seguinte estrutura, exemplo:
{
  "name": "Typescript"
}
GET /categories
• Traz todas categorias do banco de dados.
• Valida o token - req.authorization.

Post

POST /post
• Adiciona um novo blog ao usuário logado e vincula as categorias em suas tabelas no banco de dados.
• Valida o token - req.authorization.
• O endpoint deve receber a seguinte estrutura, exemplo:
{
  "title": "Latest updates, August 1st",
  "content": "The whole text for the blog post goes here in this key",
  "categoryIds": [1, 2]
}
GET /post
• Traz todos os blogs post e as categorias do banco de dados.
• Valida o token - req.authorization.
GET /post/:id
• Traz o blog post por ID e as categorias do banco de dados.
• Valida o token - req.authorization.
PUT /post/:id
• Atualiza o blog post por ID.
• Valida o token - req.authorization.
DELETE /post/:id
• Deleta o blog post por ID.
• Valida o token - req.authorization.
GET /post/search?q=:searchTerm
• Retornar um array de blogs post que contém em seu título ou conteúdo o termo passado na URL.
• Valida o token - req.authorization.

🛠️ Ferramentas & Metodologias Utilizadas


⌨️ desenvolvido por Jayromberg Lima Santos 😄


⭐️ README de referência: João Pedro Oliveira