Projeto API de Produtos! 🪙
Nesse projeto, o objetivo era desenvolver um CRUD (Create, Read, Update e Delete) de itens medievais, no formato de uma API, utilizando Typescript e criar alguns endpoints que irão ler e escrever em um banco de dados, utilizando o MySQL. Desafio:
- Declarar variáveis e funções com tipagens Typescript;
- Construir uma API Node Express utilizando o Typescript.
Essa API, possui alguns endpoints (seguindo os princípios do REST) que estão conectados ao banco de dados, sempre pensando no modelo de negócio. A ideia dessa API é criar um api de produto.Nessa API o usuário irá fazer o login e caso não tenha cadastro ainda, se cadastrar. Caso as autentificações estejam corretas e ele exista no banco de dados, irá criar um token de autentificação e esterá permitido cadastrar um novo produto ou listá-los.
Ferramentas usadas 🧰
🔨 Este projeto foi feito com Node.js utilizando TypeScript.
INSTRUÇÕES :
- Clone o repositório
git clone git@github.com:luanamonero/crud-api-products.git
.- Entre na pasta do repositório que você acabou de clonar:
cd crud-api-products
- Instale as dependências
npm install
- Crie, na raíz do projeto, um arquivo
.env
contendo as seguintes variáveis:
host: process.env.MYSQL_HOST
user: process.env.MYSQL_USER
password: process.env.MYSQL_PASSWORD
- Conexão com o banco de dados local
A conexão do banco local deverá conter os seguintes parâmetros:
import dotenv from 'dotenv';
import mysql from 'mysql2/promise';
dotenv.config();
const connection = mysql.createPool({
host: process.env.MYSQL_HOST,
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PASSWORD,
});
export default connection;
host: process.env.MYSQL_HOST
user: process.env.MYSQL_USER
password: process.env.MYSQL_PASSWORD
Tabelas
O banco terá três tabelas: pessoas usuárias, produtos e pedidos.
DROP SCHEMA IF EXISTS Trybesmith;
CREATE SCHEMA Trybesmith;
CREATE TABLE Trybesmith.Users (
id INTEGER AUTO_INCREMENT PRIMARY KEY NOT NULL,
username TEXT NOT NULL,
classe TEXT NOT NULL,
level INTEGER NOT NULL,
password TEXT NOT NULL
);
CREATE TABLE Trybesmith.Orders (
id INTEGER AUTO_INCREMENT PRIMARY KEY NOT NULL,
userId INTEGER,
FOREIGN KEY (userId) REFERENCES Trybesmith.Users (id)
);
CREATE TABLE Trybesmith.Products (
id INTEGER AUTO_INCREMENT PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
amount TEXT NOT NULL,
orderId INTEGER,
FOREIGN KEY (orderId) REFERENCES Trybesmith.Orders (id)
);
- Inicie o projeto
npm start
npm run dev
caso queria rodar o projeto através do nodemon
- Acesse as rotas através de softwares como Postman e Insomnia através do endereço:
http://localhost:3000