Um Projeto feito no Curso da Trybe!
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;
Desenvolvida utilizando: JavaScript, NodeJS, expres, express-async-errors, Docker, Sequelize.
🐳 Usando Docker
Rode os serviços
node
edb
com o comandodocker-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 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
😀 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.
🎲 Conexão com o Banco
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
-
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.
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"
},
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