API construída como mockup para a integração de um sistema de gerenciamento de e-commerce.
Esta aplicação tem como dependência:
- ExpressJS
- Nodemon
- Sucrase
No cmd, navegue até o diretório em que deseja clonar o repositório.
Dentro do diretório, utilize o comando:
$ git clone https://github.com/danielalfb/gama-ecommerce-api.git
npm install
npm run dev
A REST API construída esta especificada abaixo.
localhost:3000
Retorna a lista de todos os produtos existentes.
/produtos
-
Requisição:
/produtos
-
Status:
-
Conteúdo:
[ { "id": 1, "nome": "SSD Kingston A400, 480GB", "preco": 409.9, "qtd_estoque": 70, "disponivel": 1, "em_destaque": 1, "id_dept": 1, "nome_dept": "Hardware" }, { "id": 2, "nome": "Fone de Ouvido Sem Fio Sennheiser HD450BT", "preco": 989, "qtd_estoque": 10, "disponivel": 1, "em_destaque": 0, "id_dept": 2, "nome_dept": "Audio" }, { "id": 3, "nome": "Fone de Ouvido JBL In Ear, Preto, JBLC50HIBLK", "preco": 39, "qtd_estoque": 30, "disponivel": 1, "em_destaque": 0, "id_dept": 2, "nome_dept": "Audio" }, { "id": 4, "nome": "Smartphone Xiaomi Redmi 9, 64GB", "preco": 1429.9, "qtd_estoque": 5, "disponivel": 1, "em_destaque": 1, "id_dept": 3, "nome_dept": "Smartphones" } ]
Dispara caso o array de Produtos esteja vazio.
Retorna os detalhes de 1 único produto.
/produtos/{id}
id=[INTEGER]
Nenhum
-
Requisição:
/produtos/1
-
Status:
-
Conteúdo:
{ "id": 1, "nome": "SSD Kingston A400, 480GB", "preco": 409.9, "qtd_estoque": 70, "disponivel": 1, "em_destaque": 1, "id_dept": 1, "nome_dept": "Hardware" }
Recebe um JSON com dados de um produto e o inclui na base de dados.
/produto
Nenhum
{
"nome": STRING,
"preco": INT,
"qtd_estoque": INT,
"disponivel": 1 || 0,
"em_destaque": 1 || 0,
"id_dept": INT,
"nome_dept": STRING
}
-
Requisição:
{ "nome": "Smartphone Asus Zenfone 6, 256GB", "preco": 3869, "qtd_estoque": 7, "disponivel": 1, "em_destaque": 0, "id_dept": 3, "nome_dept": "Smartphones" }
-
Status:
-
Conteúdo:
{ "id": 5, "nome": "Smartphone Asus Zenfone 6, 256GB", "preco": 3869, "qtd_estoque": 7, "disponivel": 1, "em_destaque": 1, "id_dept": 3, "nome_dept": "Smartphones" }
-
Requisição:
{ "nome": "Smartphone Asus Zenfone 6, 256GB", "preco": 0, "qtd_estoque": 7, "disponivel": 1, "em_destaque": 0, "id_dept": 3, "nome_dept": "Smartphones" }
-
Status:
-
Conteúdo:
{ "error": "O preço do produto não pode ser 0." }
-
Requisição:
{ "preco": 3869, "qtd_estoque": 7, "disponivel": 1, "em_destaque": 1, "id_dept": 3, "nome_dept": "Smartphones" }
-
Status:
-
Conteúdo:
{ "err": "Preenchimento incorreto, cheque os campos." }
Recebe um JSON com dados de um produto, cujo ID é especificado na URL e atualiza seus dados na base de dados.
/produto/{id}
id=[INTEGER]
{
"nome": STRING,
"preco": INT,
"qtd_estoque": INT,
"disponivel": 1 || 0,
"em_destaque": 1 || 0,
"id_dept": INT,
"nome_dept": STRING
}
-
Requisição na URL:
/produtos/1
-
Requisição no BODY:
{ "nome": "SSD Kingston A400, 480GB", "preco": 309, "qtd_estoque": 20, "disponivel": 1, "em_destaque": 1, "id_dept": 1, "nome_dept": "Hardware" }
-
Status:
-
Conteúdo:
{ "id": 1, "nome": "SSD Kingston A400, 480GB", "preco": 309, "qtd_estoque": 20, "disponivel": 1, "em_destaque": 1, "id_dept": 1, "nome_dept": "Hardware" }
-
Requisição na URL:
/produtos/10
-
Status:
-
Conteúdo:
{ "err": "Produto não existe." }
-
Requisição na URL:
/produtos/1
-
Requisição no BODY:
{ "nome": "SSD Kingston A400, 480GB", "preco": 309, "disponivel": 1, "em_destaque": 1, "id_dept": 1, "nome_dept": "Hardware" }
-
Status:
-
Conteúdo:
{ "err": "Preenchimento incorreto, cheque os campos." }
-
Requisição na URL:
/produtos/1
-
Requisição no BODY:
{ "nome": "SSD Kingston A400, 480GB", "preco": 0, "qtd_estoque": 20, "disponivel": 1, "em_destaque": 1, "id_dept": 1, "nome_dept": "Hardware" }
-
Status:
-
Conteúdo:
{ "err": "O preço do produto não pode ser 0." }
Retorna a lista de todos os departamentos existentes.
/departamentos
-
Requisição:
/departamentos
-
Status:
-
Conteúdo:
[ { "id": 1, "nome": "Hardware" }, { "id": 2, "nome": "Audio" }, { "id": 2, "nome": "Audio" }, { "id": 3, "nome": "Smartphones" } ]
Dispara caso o array de Departamentos esteja vazio.
Retorna o departamento e a lista de produtos que estão associadas a ele.
/departamentos/{id}
id=[INTEGER]
Nenhum
-
Requisição:
/departamentos/2
-
Status:
-
Conteúdo:
[ { "id": 2, "nome": "Audio" }, [ { "produto": "Fone de Ouvido Sem Fio Sennheiser HD450BT" }, { "produto": "Fone de Ouvido JBL In Ear, Preto, JBLC50HIBLK" } ] ]