Este projeto é um exemplo de um Back-End para uma loja virtual.
O banco de dados utilizado é o SQLite e a API foi construída usando o framework Express do Node JS. Este repositório é um exemplo de como construir uma estrutura de Back-End para uma aplicação de comércio eletrônico e pode ser usado como base para projetos futuros.
Este projeto é parte dos projetos realizados como atividade durante o bootcamp da Labenu.
- Clone o repositório:
git clone https://github.com/vitorfontenele/labecommerce-backend.git
- Instale os pacotes NPM:
npm install
- Para executar o projeto em modo de desenvolvimento:
npm run dev
Seguem exemplos de como utilizar a API criada neste projeto.
// Request
// GET /users
// Response
// status 200 OK
[
{
id: "u001",
name: "John Smith",
email: "[email protected]",
password: "Pass1",
createdAt: "2023-01-26 23:49:33"
},
{...},
{
id: "u009",
name: "Andrew Gonzalez",
email: "[email protected]",
password: "SecP@s2",
createdAt: "2023-01-26 23:49:33"
}
]
// Request
// POST /users
// body JSON
{
"id": "u010",
"name": "Daniel Henderson",
"email": "[email protected]",
"password": "passw00"
}
// Response
// status 201 CREATED
{
message: "Cadastro realizado com sucesso",
user: {
id: "u010",
name: "Daniel Henderson",
email: "[email protected]",
password: "passw00"
}
}
// Request
// POST /products
// body JSON
{
"id": "prod010",
"name": "Joystick",
"price": 150,
"description": "Ultimate gaming experience.",
"imageUrl": "https://dummy.com/joystick.jpg",
"category": "Electronics"
}
// Response
// status 201 CREATED
{
message: "Produto cadastrado com sucesso",
product: {
id: "prod010",
name: "Joystick",
price: 150,
description: "Ultimate gaming experience.",
imageUrl: "https://dummy.com/joystick.jpg",
category: "Electronics"
}
}
Retorna todos os produtos cadastrados.
// Request
// GET /products
// Response
// status 200 OK
[
{
id: "prod001",
name: "Sunscreen",
price: 10,
description: "Designed to protect you from UV radiation.",
imageUrl: "https://dummy.com/sunscreen.jpg",
category: "Acessories"
},
{...},
{
id: "prod009",
name: "Shoes",
price: 50,
description: "Comfortable and stylish.",
imageUrl: "https://dummy.com/shoes.jpg",
category: "Clothes and Shoes"
}
]
Caso seja enviada uma query params (q) deve ser retornado o resultado da busca de produtos por nome.
// Request
// query params = q
// GET /products?q=phone
// Response
// status 200 OK
[
{
id: "prod006",
name: "Smartphone",
price: 600,
description: "Stay connected and productive.",
imageUrl: "https://dummy.com/smartphone.jpg",
category: "Electronics"
}
]
// Request
// path params = :id
// PUT /products/prod002
// body JSON
{
"description": "Your best friend in summer days.",
}
// Response
// status 200 OK
{
message: "Produto atualizado com sucesso",
product: {
"id": "prod002",
"name": "Sunglasses",
"price": 15,
"description": "Your best friend in summer days.",
"imageUrl": "https://dummy.com/sunglasses.jpg",
"category": "Acessories"
}
}
// Request
// POST /purchases
// body JSON
{
"id": "pur002",
"buyer": "u001",
"totalPrice": 25,
"products": [
{
"id": "prod003",
"name": "Blender",
"price": 25,
"description": "Blend and mix your ingredients with ease.",
"imageUrl": "https://dummy.com/blender.jpg",
"category": "Electronics",
"quantity": 1
}
]
}
// Response
// status 201 CREATED
{
message: "Pedido realizado com sucesso"
}
// Request
// path params = :id
// DELETE /purchases/pur002
// Response
// status 200 OK
{
message: "Pedido cancelado com sucesso"
}
// Request
// path params = :id
// GET /purchases/pur001
// Response
// status 200 OK
{
purchaseId: "pur001",
buyerId: "u001",
buyerName: "John Smith",
buyerEmail: "[email protected]",
totalPrice: 1500,
createdAt: "2023-01-27 00:00:03",
paid: 0,
products: [
{
id: "prod006",
name: "Smartphone",
price: 600,
description: "Stay connected and productive.",
imageUrl: "https://dummy.com/smartphone.jpg",
quantity: 1
},
{
id: "prod007",
name: "Laptop",
price: 900,
description: "Powerful and portable.",
imageUrl: "https://dummy.com/laptop.jpg",
quantity: 1
}
]
}
Link do Projeto: https://github.com/vitorfontenele/labecommerce-backend