Skip to content

Neste projeto eu desenvolvi uma aplicação Backend para um Blog fictício. A aplicação é uma API Rest feita em Node.js + Express.js + Sequelize.

Notifications You must be signed in to change notification settings

Adolligit/blogs-api

Repository files navigation

Blogs API

Blogs API é uma API Rest que simula o gerenciamento de conteúdo de um Blog. Os conteúdo são exclusivamente postagens, que são criadas pelos usuários cadastrados e autenticados.

Um usuário recém criado, só poderá criar uma nova postagem ao fazer Login e receber o token de autenticação. Desta forma, ele poderá usufruir também de todos os outros recursos que esta API oferece.

A API foi criada com JavaScript (Node.js), utilizando o framework minimalista Express.js e se conectando ao banco de dados MySQL através do ORM Sequelize.js. Há também a utilização da biblioteca JOI para validação de estrutura de dados recebida na requisição e o JWT para geração do token para autenticação de usuário.

Como eu faço para executar este projeto?

Primeiro faça o clone e navegue até a pasta do projeto:

git clone [email protected]:Adolligit/blogs-api.git && cd blogs-api/

Instalação

🚨 As versões descritas nas instalações são fortemente recomendadas. No entanto, caso queira tentar em uma versão diferente, considere a possível aparição de erros durante a execução do projeto.

Escolha uma das instalações a seguir:

Instalar com Docker 🐳 Requisitos
Você deve possuir as seguintes ferramentas:
  • Docker: v24
  • Docker Compose: v2.19
  1. Crie e inicie os contêiners:
docker compose up -d
  1. Entre no contêiner da aplicação:
docker exec -it blogs_api bash

Instalar localmente 💻 Requisitos
Você deve possuir as seguintes ferramentas:
  • npm: v9.8.0
  • Node.js: v20.5
  • MySQL: v8
  1. Renomeie o arquivo .env.example na pasta raiz para .env
    mv .env.example .env
  2. Abra o arquivo .env e então, somente edite os valores da seguintes chaves:
    #api
    ...
    JWT_SECRET=
    
    #db
    ...
    MYSQL_USER=
    MYSQL_PASSWORD=
  3. Salve o arquivo!

Execução

Comando Descrição
npm install Instalar as dependências do projeto
npm run prestart Criar o banco de dados MySQL e suas tabelas
npm run seed Popular o banco de dados
npm start Iniciar o projeto
npm run dev Inciar o projeto em modo de desenvolvimento (nodemon)
npm run lint Executar o ESLint para verificar os erros de código estático
npm run reset Recriar o banco de dados já populado
npm run drop Deletar o banco de dados

Quais são as rotas desta API?

Deixei uma documentação feita com Swagger UI para facilitar e lhe orientar no uso da API. Você poderá acessa-la clicando aqui. gif de demonstração de uso

Como estão organizadas as tabelas?

Gerei este DER para facilitar a visualização da estrutura do banco de dados. Desta forma fica mais fácil saber como esta o relacionamento entre as entidades. Confira: DER

Erros comuns

Descrevo neste tópico alguns possíveis erros que você pode estar enfrentando durante a instalação ou execução desta API.

Uma das opções descritas no erro poderá resolver o problema que você esta enfrentando. Contudo, caso ainda permaneça com dificuldade para testar a API, me envie um e-mail: [email protected].

Antes de prosseguir, por favor confirme que:

  • Docker 🐳
    • Você tem instalado em sua máquina o Docker e o Docker Compose nas versões mínimas exigidas.
    • Verificou que a Docker Engine esta funcionando corretamente na sua máquina.
  • Localmente 💻
    • Você tem instalado em minha máquina o MySQL, Node.js e NPM nas versões mínimas exigidas.
    • Verificou que o MySQL esta funcionando corretamente na sua máquina.

Possíveis erros de instalação e execução:

Erro ao subir os contêiners: docker compose up -d docker-error

Você esta tentando subir os contêiners do Docker porém uma das portas já está em uso. Pode ser o banco de dados ou a API com este erro.

As portas descritas para uso no docker-compose.yml são:

  • API: 3000
  • Banco: 3307

Para resolver isso, você pode:

  • Desativar os programas que estão fazendo uso destas portas; OU
  • Alterar o valor para as portas no arquivo docker-compose.yml, em:
    • ports (para db e node): as portas da máquina local são descritas no lado esquerdo.
Erro durante a instalação de dependências: npm install npm-install

O NPM não encontrou o arquivo 'package.json' na pasta de execução. Você pode ter excluído sem querer ou pode estar executando o comando fora da pasta do projeto.

Para resolver isso, você pode:

Erro ao tentar popular o banco de dados ou ele não foi reconhecido npm-seed

Este erro significa que não há o banco de dados 'blogs-api-test' criado.

Para resolver isso você deve:

  • Executar o comando npm run prestart (acho que você esqueceu disso lá nos comando acima).

Linguagens e ferramentas:

Agradecimento

E nada disso seria possível se não houvesse a idealização do projeto, portanto, agradeço a @tryber pelo cuidado em trazer um projeto que nos desafia (nos alunos), a colocar em prática todos os nossos conhecimento em programação. Obrigadão mesmo!