Skip to content

API de gerenciamento de um Blog com arquitetura MSC.

Notifications You must be signed in to change notification settings

IgorBrizack/BlogsApi

Repository files navigation

📝 Projeto Blogs API

📄 Sobre

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

📋 Execute o projeto em sua máquina

Clone o repositório:

git clone git@github.com:IgorBrizack/BlogsApi.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.

User

POST /user
• Cadastra um novo usuário, permitindo apenas um email válido, gerando um token.
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.
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.
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 Igor Brizack 😄