Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/updateapinew #19

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
162 changes: 148 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,158 @@
# json-server-base
Soluções Engenharia API ⚒️

Esse é o repositório com a base de JSON-Server + JSON-Server-Auth já configurada, feita para ser usada no desenvolvimento das API's nos Projetos Front-end.
Essa é uma Fake API, simulando um backend, do projeto Soluções Engenharia - uma aplicação web que tem como objetivo gerenciar o estoque, custo e organização dos materiais de construção de maneira integrada!

## Endpoints
Base URL

Assim como a documentação do JSON-Server-Auth traz (https://www.npmjs.com/package/json-server-auth), existem 3 endpoints que podem ser utilizados para cadastro e 2 endpoints que podem ser usados para login.
BaseUrl: http://localhost:3001

### Cadastro
EndPoints

POST /register <br/>
POST /signup <br/>
POST /users
Register

Qualquer um desses 3 endpoints irá cadastrar o usuário na lista de "Users", sendo que os campos obrigatórios são os de email e password.
Você pode ficar a vontade para adicionar qualquer outra propriedade no corpo do cadastro dos usuários.
POST /register

Através desse endpoint, o usuário irá conseguir realizar o cadastro na plataforma, sendo obrigatório preencher os campos de e-mail e senha.

### Login
Formato de requisição
{
"email": "[email protected]",
"password": "#Batata123"
}

POST /login <br/>
POST /signin
Exemplo de response - 201
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImFsZXgxMjM0NUBtYWlsLmNvbSIsImlhdCI6MTY3MjkzMDQxMiwiZXhwIjoxNjcyOTM0MDEyLCJzdWIiOiI0In0.77ESpkied99MZotQ8ehJgi-Yw8zZxnAARB2bRFqeI9g",
"user": {
"email": "[email protected]",
"id": 4 } }

Qualquer um desses 2 endpoints pode ser usado para realizar login com um dos usuários cadastrados na lista de "Users"
Login

POST/login

Esse endpoint tem como objetivo logar na aplicação após ser feito o cadastro.

Formato de requisição
{
"email": "[email protected]",
"password": "#Batata123"
}

Exemplo de response - 201
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImFsZXgxMjM0NUBtYWlsLmNvbSIsImlhdCI6MTY3MjkzMDQzOSwiZXhwIjoxNjcyOTM0MDM5LCJzdWIiOiI0In0.oPLhsBZiSiU5-S9Z5JBVvQXf3kYlm0yK\_\_dKM1G0BMA",
"user": {
"email": "[email protected]",
"id": 4
}
}

Listar Produtos

GET/products

Esse endpoint tem como objetivo listar todos os produtos criados pelo usuário.

Exemplo de response - 201
[
{
"userId": 1,
"img": "https://a-static.mlcdn.com.br/1500x1500/cimento-todas-as-obras-50kg-votorantim/ceccasaeconstrucao/7cf42d78912457af4337112226580041/8211a2e9aaef87e30714dd6b47ac9076.jpeg",
"name": "Cimento Votorantim 50kg",
"stock": "50",
"type": "Cimento",
"id": 1
},
{
"userId": 1,
"img": "https://d365e82sgxmduv.cloudfront.net/Custom/Content/Products/11/06/1106528_joelho-90graus-esgoto-sec-40-tigre_m1_636600773795136557.jpg",
"name": "Joelho 90°",
"stock": "30",
"type": "Conexoes",
"id": 2
}
]

Filtrar Produtos

GET/products?type=Conexoes

Esse endpoint tem como objetivo filtrar todos os produtos criados pelo usuário pelo type.

Exemplo de response - 201
[
{
"userId": 1,
"img": "https://d365e82sgxmduv.cloudfront.net/Custom/Content/Products/11/06/1106528_joelho-90graus-esgoto-sec-40-tigre_m1_636600773795136557.jpg",
"name": "Joelho 90°",
"stock": "30",
"type": "Conexoes",
"id": 2
}
]

Rotas que precisam de autenticação
Todas as rotas a partir daqui necessitam de um token de autorização do usuário.

Criação de produtos

POST/products

Esse endpoint tem como objetivo adicionar novos produtos pelo id do usuário cadastrado.

Formato de requisição
{
"userId": 4,
"img": "https://cdn.leroymerlin.com.br/products/estanho_em_fio_para_solda_1mm_60x40_500g_vonder_87447402_0001_600x600.jpg",
"name": "Estanho",
"description": "Feitos para soldar componentes eletrônicos",
"stock": "2000",
"type": "Solda"
}

Exemplo de response - 201
{
"userId": 4,
"img": "https://cdn.leroymerlin.com.br/products/estanho_em_fio_para_solda_1mm_60x40_500g_vonder_87447402_0001_600x600.jpg",
"name": "Estanho",
"description": "Feitos para soldar componentes eletrônicos",
"stock": "2000",
"type": "Solda",
"id": 6
}

Atualizar produto

PATCH/products/:id

Esse endpoint tem como objetivo atualizar os produtos criados pelo id, gerado na criação do produto.

Formato de requisição
{
"img": "https://ducacec.com.br/product_images/o/971/2__98583_std.png",
"name": "Tijolo Baiano",
"description": "São blocos de cerâmica ou argila cozidos em forno. São usados para construir paredes e estruturas de suporte",
"stock": "300",
"type": "Tijolo"
}

Exemplo de response - 201
{
"userId": 4,
"img": "https://ducacec.com.br/product_images/o/971/2__98583_std.png",
"name": "Tijolo Baiano",
"description": "São blocos de cerâmica ou argila cozidos em forno. São usados para construir paredes e estruturas de suporte",
"stock": "10",
"type": "Tijolo",
"id": 6
}

Deletar produto

DELETE/products/:id

Esse endpoint tem como objetivo deletar os produtos criados pelo id, gerado na criação do produto.

Exemplo de response - 201
{}
151 changes: 150 additions & 1 deletion db.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,156 @@
"password": "$2a$10$YQiiz0ANVwIgpOjYXPxc0O9H2XeX3m8OoY1xk7OGgxTnOJnsZU7FO",
"name": "Kenzinho",
"age": 38,
"avatarUrl": "https://st.depositphotos.com/2818715/5102/i/600/depositphotos_51026865-stock-photo-serious-and-pensive-isolated-young.jpg",
"id": 1
},
{
"email": "[email protected]",
"password": "$2a$10$B2V.XZW.AtY9srOA/eWj2.AzBr9c6/MjmAocpMUf1.FV.Z7Xxij6u",
"avatarUrl": "https://cdn.vnda.com.br/cobogo/2021/10/29/19_10_3_309_site_autor_PatrickPessoa.jpg?v=1638557521",
"id": 2
},
{
"email": "[email protected]",
"password": "$2a$10$Jl8HAehtaWw0J8dxBSX53OlgpCvH5KFcaH0r1VIQ8fU81ADffvLaK",
"id": 3
},
{
"email": "[email protected]",
"password": "$2a$10$nqTbBS300xJNRMIT1y9EnuM.nNxQ9KsyZ.xyh1gnrItkuWwTi4BSC",
"id": 4
},
{
"email": "[email protected]",
"password": "$2a$10$OWXT5sxDwCdpZ.ZvgoCNFuq.P5oLZ3yOlO9QkUlYEory57VMZoBJS",
"id": 5
},
{
"email": "[email protected]",
"password": "$2a$10$VzfjExqVA23dlCFofl67P.INZ0t5.EFZ5sGXWi73SBtToiDciBg9G",
"id": 6
},
{
"email": "[email protected]",
"password": "$2a$10$BRxVh8zjarBgNlXOWJw5uO8nVqfTo9/z8c3JrHsLV7u2ChO6vR9iS",
"avatarUrl": "https://cdn.vnda.com.br/cobogo/2021/10/29/19_10_3_309_site_autor_PatrickPessoa.jpg?v=1638557521",
"id": 7
}
],
"products": [
{
"userId": 1,
"img": "https://a-static.mlcdn.com.br/1500x1500/cimento-todas-as-obras-50kg-votorantim/ceccasaeconstrucao/7cf42d78912457af4337112226580041/8211a2e9aaef87e30714dd6b47ac9076.jpeg",
"name": "Cimento 50kg votorantim ",
"description": "Ideal para construções de casas e edifícios",
"stock": 50,
"price": 22,
"type": "Massa",
"id": 1
},
{
"userId": 1,
"img": "https://d365e82sgxmduv.cloudfront.net/Custom/Content/Products/11/06/1106528_joelho-90graus-esgoto-sec-40-tigre_m1_636600773795136557.jpg",
"name": "Joelho 90° Tigre",
"description": "Conexão de esgoto usada para conexão hidráulica",
"stock": 30,
"price": 3,
"type": "Conexoes",
"id": 2
},
{
"userId": 1,
"img": "https://ducacec.com.br/product_images/o/971/2__98583_std.png",
"name": "Tijolo baiano",
"description": "São blocos de cerâmica ou argila cozidos em forno. São usados para construir paredes e estruturas de suporte",
"stock": 200,
"price": 2002,
"type": "Tijolo",
"id": 3
},
{
"userId": 5,
"img": "https://cdn.leroymerlin.com.br/products/estanho_em_fio_para_solda_1mm_60x40_500g_vonder_87447402_0001_600x600.jpg",
"name": "Estanho",
"description": "Feitos para soldar componentes eletrônicos",
"stock": 2000,
"price": 10,
"type": "Solda",
"id": 4
},
{
"userId": 7,
"img": "https://http2.mlstatic.com/D_NQ_NP_944598-MLB44826768863_022021-O.webp",
"name": "Disco De Corte Starrett",
"description": "Ideal para fazer cortes em metal e aço inox 4.1/2",
"stock": 3000,
"price": 4,
"type": "Disco",
"id": 5
},{
"userId": 7,
"img": "https://cdn.leroymerlin.com.br/products/joelho_45o_solda_marrom_25mm_3_4_tigre_85307082_0001_600x600.jpg",
"name": "Joelho 45° 25Mm Tigre",
"description": "Conexão reforçada para conexão hidráulica",
"stock": 50,
"price": 30,
"type": "Conexoes",
"id": 6
},{
"userId": 7,
"img": "https://lojaacal.vteximg.com.br/arquivos/ids/160945-1000-1000/colamix-gesso-em-po-1kg-rejuntamix.jpg?v=637357108030570000",
"name": "Gesso 1 Kg Rejuntamix",
"description": "Indicado para revestimento de paredes de alvenaria de blocos cerâmicos ou de concreto",
"stock": 200,
"price": 26,
"type": "Massa",
"id": 7
},{
"userId": 7,
"img": "https://cdn.leroymerlin.com.br/products/massa_corrida_25_kg__89900916_0001_600x600.jpg",
"name": "Massa corrida 25kg Coral",
"description": "Indicada para uniformizar, nivelar e corrigir pequenas imperfeições",
"stock": 200,
"price": 95,
"type": "Massa",
"id": 8
},{
"userId": 7,
"img": "https://tinboltintas.com.br/wp-content/uploads/2021/02/Tinta-Acrilica-Emborrachada-Protecao-Total-36l-Suvinil.jpg",
"name": "Tinta acrílica Suvinil",
"description": "Indicada para primeira pintura e repintura de área externa",
"stock": 40,
"price": 235,
"type": "Tinta",
"id": 9
},{
"userId": 7,
"img": "https://www.cstintas.com.br/wp-content/uploads/coral-standard-acrilico-fosco-rende-muito-galao.jpg",
"name": "Tinta Standard Coral",
"description": "Tinta Standard de fácil aplicação e baixíssimo respingamento",
"stock": 100,
"price": 75,
"type": "Tinta",
"id": 10
},{
"userId": 7,
"img": "https://cdn.leroymerlin.com.br/products/adesivo_de_contato_cascola_2,8kg_henkel_87368666_0001_600x600.jpg",
"name": "Adesivo de Contato Cascola",
"description": "É indicado para a colagem de pisos de borracha, couro, metais, madeiras",
"stock": 30,
"price": 134,
"type": "Cola",
"id": 11
},{
"userId": 7,
"img": "https://img.lojadomecanico.com.br/IMAGENS/37/431/118659/Disco-de-Serra-Circular-165-x-20mm-com-1-makita-d-513061.JPG",
"name": "Disco De Serra Circular",
"description": "Indicado pata cortes em madeira no geral.",
"stock": 3,
"price": 35,
"type": "Disco",
"id": 13
}

]
}
}
3 changes: 2 additions & 1 deletion routes.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{
"users": 600
"users": 600,
"products": 644
}
1 change: 1 addition & 0 deletions server.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ app.db = router.db;

const rules = auth.rewriter({
users: 600,
products: 644,
});

app.use(cors());
Expand Down