Skip to content

A aplicação simula a ideia de gerênciar suas postagens em um blog. Podendo criar, editar ou até mesmo excluir tais edições!

Notifications You must be signed in to change notification settings

MarioFLS/Blogs-API

Repository files navigation

Projeto BlogsAPI!

Um Projeto feito no Curso da Trybe!

Descrição

BlogsAPI é uma aplicação BackEnd em NodeJS que permiti você interagir diretamente com o banco de dados. Possibilitando interagir com o banco de dados página de blog.

Essa Aplicação Permite:

  • Ter uma experiência de estar criado posts para seu blog, editala-los ou remove-los;
  • Adição e exclusão de qualquer produto ou post ou usuário;

Tecnologias Usadas

Desenvolvida utilizando: JavaScript, NodeJS, expres, express-async-errors, Docker, Sequelize.

Como Utilizar

Você pode escolher utilizar Docker ou Não.

🐳 Usando Docker

Rode os serviços node e db com o comando docker-compose up -d.

  • 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


😀 Sem Docker

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 Conectar ao Banco

🎲 Conexão com o Banco

Crie o Banco

⚠️ IMPORTANTE! A senha do Banco é Password

require('dotenv').config(); // não se esqueça de configurar suas variáveis de ambiente aqui na configuração

  const connection = mysql.createPool({
  host: process.env.MYSQL_HOST,
  user: process.env.MYSQL_USER,
  password: process.env.MYSQL_PASSWORD,
  database: process.env.MYSQL_DATABASE || 'StoreManager',
});

Para os testes rodarem corretamente, na raiz do projeto renomeie o arquivo .env.example para .env com as variáveis de ambiente. Por exemplo, caso o seu usuário SQL seja nome e a senha 1234 seu arquivo ficará desta forma:

MYSQL_HOST=localhost
MYSQL_USER=nome
MYSQL_PASSWORD=1234
MYSQL_DATABASE=blogs-api
PORT=3000
⚠️ Atenção
  • Variáveis de ambiente além das especificadas acima não são suportadas, pois não são esperadas pelo avaliador do projeto.

  • A variável PORT do arquivo .env deve ser utilizada para a conexão com o servidor.

Com essas configurações, enquanto estiver na máquina local, o banco será executado normalmente via localhost (possibilitando os testes via npm test). Como o arquivo .env não será enviado para o GitHub (não se preocupe com isso, pois já está configurado no .gitignore), use o arquivo .envDev. Ela está pronta. Caso queira mudar algo, sinta-se avontade.

Como Testar Os Caminhos - Exemplos

Alguns precisaram de informações adicionais no body da requisição.

Criar Posts
Você precisa da autorização. No produto, isso vem atrávez do token. A authorização é dada para todo user quando se cria o email ou requesita. Coloque na aba de *headers* com o nome: "Authorization";

Pegar todos os Posts GET http://localhost:3000/post

Pegar Posts pelo ID GET. Precisa ser um ID que exista. Se não retornará um erro! http://localhost:3000/post/2

Criar novos Posts POST `[http://localhost:3000/post``

  {
    "title": "Latest updates, August 1st",
    "content": "The whole text for the blog post goes here in this key"
  } 

Editar um Produto PUT. Você precisa passar um id existente! http://localhost:3000/products/4

  {
    "title": "Latest updates, August 1st",
    "content": "The whole text for the blog post goes here in this key"
  }

Deletar um Post Delete. Você precisa passar um id existente! http://localhost:3000/products/4


Criar Categoria
Você precisa da autorização. No produto, isso vem atrávez do token. A authorização é dada para todo user quando se cria o email ou requesita. Coloque na aba de *headers* com o nome: "Authorization";

Criar uma nova categoria POST http://localhost:3000/categories

 {
   "name": "Typescript"
 }

Pegar todas as categorias GET http://localhost:3000/categories


Criar Usuários

Criar um novo user POST http://localhost:3000/user

  {
    "displayName": "mario fernando",
    "email": "[email protected]",
    "password": "123446",
    "image": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png"
  } 

Logar como usuário POST http://localhost:3000/login

  {
    "email": "[email protected]",
    "password": "123456"
  },

Iniciar a aplicação

Você pode usar esse comando no terminal para iniciar a aplicação. O Console do terminal dirá em qual porta ele está usando.

Caso Possua algum erro e a aplicação não inicie: "A porta pode estar sendo utilizada. Teste o comando killall node. Mas cuidado, ele ira derrubar qualquer aplicação node".

Veja também se o docker não foi fechado corretamente e esta usando a porta. Você pode simplismente reiniciar o container

npm start

About

A aplicação simula a ideia de gerênciar suas postagens em um blog. Podendo criar, editar ou até mesmo excluir tais edições!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published