1 - Clonar o repositório: git clone https://github.com/RonaldoBueno16/Loja-Integrada.git
docker build -t mysql-image -f ${pwd}/db/Dockerfile .
docker run -d --rm --name=mysql-container --env MYSQL_ROOT_PASSWORD=lojaintegrada --detach --publish 3306:3306 mysql
docker build -t api_carrinho ${pwd}/api/
docker run --rm --name=api-carrinho --detach --link mysql-container --publish 3000:3000 api_carrinho
Todas as requisições da API referente ao carrinho de compras, exigem o uso de um Bearer Token. Você pode encontrar esse token fazendo o login na sua conta de usuário.
Para autenticar uma solicitação dos metodos do carrinho de compra, você deve fornecer sua chave de API no Authorization
do tipo Baerer Token
.
Quando uma requisição falha por algum motivo, ela sempre enviará um JSON informando o que está errado na requisição:
Codigo do erro | Erro | Razão |
---|---|---|
1 | INVALID_JSON | Quando o usuário envia um JSON inválido |
2 | SERVER_NOT_RESPOND | Quando ocorre algum erro de servidor |
3 | NOTFOUND | Quando não conseguiu encontrar nada |
4 | AUTH_FAILURE | Usuário não autenticado |
5 | PRODUCT_ERRORS | Quando ocorre um ou mais erro em uma array de produtos |
6 | NOT_EXISTS_IN_STOCK | Quando algum produto não existe no estoque |
7 | QUANTIFY_OF_STOCK | Quando ocorre algum erro relacionado a quantidade de produtos no estoque |
8 | PRODUCT_DUPLICATED | Quando há produtos duplicados |
9 | INVALID_CUPOM | Quando o cupom está inválido |
10 | ELEMENT_REFUSED | Quando é enviado um elemento inválido à uma array de produtos |
11 | PRODUCT_NOT_BELONG_USER | Quando o produto não pertence ao carrinho do usuário |
[POST] - /api/v1/cadastro
Content-Type: application/JSON
Body Request:
{
"email": "[email protected]",
"password": "example_password"
}
Response:
{
"success": true,
"message": "Usuário cadastrado com sucesso!"
}
[POST] - /api/v1/login
Content-Type: application/JSON
Body Request:
{
"email": "[email protected]",
"password": "example_password"
}
Response:
Sucesso:
{
"success": true,
"auth": true,
"message": "Usuário logado com sucesso!",
"token": "token"
}
Falha:
{
"success": false,
"auth": false,
"message": "Não foi possível encontrar uma conta com essas credenciais",
"token": null,
"errortype": {
"id": 3,
"name": "NOT_FOUND"
}
}
[GET] - /api/v1/produtos
Request:
NULL
Response:
{
"success": true,
"products": [
{
"id": id_do_produto,
"nome": nome_do_produto,
"preco": preco_do_produto,
"estoque": quantidade_do_produto_no_estoque,
"descricao": descricao,
"disponivel": se_o_produto_esta_disponivel,
"createdAt": disponivel_desde,
"updatedAt": ultima_att_nos_precos
}
]
}
[GET] - /api/v1/carrinho/
Metodo utilizado para recuperar o carrinho do cliente, gerenciar totais, subtotais e mostrar o cupom
Request:
Authorization -> Bearer Token
Exemple Response:
{
"success": true,
"cupom": null,
"cupom_percent": null,
"num_produtos": 1,
"carrinho_id": 3,
"total": 101,
"subtotal": 101,
"itens_carrinho": [
{
"produto_id": 1,
"nome": "Jaleco",
"descricao": "Jaleco de alta qualidade para atender aos clientes mais exigentes",
"preco": 101,
"quantidade": 1,
"disponivel": true,
"observacao": null
}
]
}
[POST] - /api/v1/carrinho/inserir_item/
Request:
Authorization -> Bearer Token
Content-Type: application/json (BODY)
{
"carrinho_id": id_carrinho,
"produtos": [
{
"produto_id": id_do_produto,
"quantidade": quantidade_desse_produto
}
]
}
Response:
Retorna o carrinho do usuário com todos os itens - Identico ao retorno do Buscar o carrinho do cliente
[PUT] - /api/v1/carrinho/atualizar/
Request:
Authorization -> Bearer Token
Content-Type: application/json (BODY)
{
"carrinho_id": id_do_carrinho,
"cupom": codigo, //(opcional)
"produtos": [//opcional
{
"produto_id": id_do_produto,
"quantidade": quantidade_do_item_no_carrinho
}
]
}
Response:
Retorna o carrinho do usuário com todos os itens - Identico ao retorno do Buscar o carrinho do cliente
Cupons disponíveis para uso:
LOJAINTEGRADA_5
LOJAINTEGRADA_10
LOJAINTEGRADA_15
LOJAINTEGRADA_20
LOJAINTEGRADA_25
LOJAINTEGRADA_30
[DELETE] - /api/v1/carrinho/limpar/
Request:
Authorization -> Bearer Token
Content-Type: application/json (BODY)
{
"carrinho_id": id_do_carrinho,
}
Response:
{
"success": true,
"message": "Carrinho limpo com sucesso!",
"cupom": null,
"cupom_percent": null,
"num_produtos": 0,
"carrinho_id": 2,
"total": 0,
"subtotal": 0,
"itens_carrinho": []
}
ou
{
"success": false,
"errortype": {
"id": 3,
"name": "NOTFOUND"
},
"message": "O carrinho já está vazio!"
}