📡 Desenvolvimento de um serviço HTTP resolvendo a funcionalidade de Omni Channel do cliente.
- 🧩 Tecnologias
-
Node JS
https://nodejs.org/en/
-
Npm ou Yarn
https://www.npmjs.com/
-
Clonar o repositório:
git clone https://github.com/CodeGirls-LuizaCode/backend.git
-
Instalar os pacotes:
npm install
1 - Para usar e testar a API, você precisa importar o arquivo db.sql da pasta ./db_postgres no Postgres.
2 - Alterar no arquivo ./config/database.js seu usuário e senha do banco de dados:

3 - Subir o servidor:
npm start4 - Rodar os testes conforme indicado abaixo.
Com a API em funcionamento, vamos rodar os testes que foram pedidos para o desafio via Insomnia (ou algum similar). Os endpoints obrigatórios estão em destaque. Seguem os testes:
| Endpoint | Operação HTTP | Explicação | Teste |
|---|---|---|---|
| /usuarios | POST | Recebe um JSON com dados de um usuário e o inclui na base de dados. | http://localhost:3000/usuarios Enviar no body por JSON: (exemplo) { "nome":"Ana Maria Lopes", "email":"amlopes@gmail.com", "cpf":"354.785.894-53", "data_nascimento":"1998-07-10", "senha":"12345", "EnderecoId": 3 } Retorna a frase: Usuário cadastrado com sucesso! Objeto enviado com alguma informação faltando (ex: sem cpf): retorna um status HTTP 400 - Bad Request. |
| /usuarios/login | POST | Recebe um JSON com dados de login. | http://localhost:3000/usuarios/login Enviar no body por JSON: (exemplo) { "email": "amlopes@gmail.com", "senha": "12345" } Retorna a frase: Login efetuado com sucesso Objeto enviado com alguma informação errada: retorna um status HTTP 400 - Bad Request. Caso o usuário não possua cadastro: Retonar HTTP 404 - Not Found. |
| /usuarios/:id | PUT | Recebe um JSON com dados para a atualização do usuário de acordo com o exemplo mostrado no cadastro. | http://localhost:3000/usuarios/:id Retorna a frase: Usuário atualizado com sucesso! Na atualização de usuário o CPF não pode ser alterado, pois é um valor único. Caso haja mudança de CPF o banco irá ignorar a requisição e manterá o valor do CPF inserido no cadastro. |
| /usuarios | GET | Retorna todos os usuários cadastrados no banco. | http://localhost:3000/usuarios |
| /usuarios/:id | DELETE | Remove o usuário referente ao ID inserido na URL. | http://localhost:3000/usuarios/:id Retorna a frase: Usuário deletado com sucesso! |
| /listas | GET | Retorna todas as compras do banco em detalhes. | http://localhost:3000/listas |
| /listas/compras/:usuarioId | GET | Retorna todas as compras finalizadas do usuário identificado no ID da URL. | http://localhost:3000/listas/compras/:usuarioId |
| /listas/carrinho/:usuarioId | GET | Retorna todas as compras não finalizadas do usuário identificado no ID da URL. | http://localhost:3000/listas/carrinho/:usuarioId |
| /listas | POST | Adiciona um produto à lista de compras do cliente. | http://localhost:3000/listas Enviar no body por JSON: (exemplo) { "ProdutoId": 5, "UsuarioId": 4 } Retorna a frase: Produto adicionado a lista Objeto enviado com alguma informação faltando (ex: sem o ID do produto): retorna um status HTTP 400 - Bad Request. Lembrando: Só é possível adicionar um produto de cada tipo por lista. |
| /listas/:listaId | DELETE | Remove um produto da lista de compras do cliente. | http://localhost:3000/listas/:listaId Retorna a frase: Produto removido da lista de compras! Caso haja a tentativa de remover um produto de uma lista já finalizada retornará a mensagem: Não é possível excluir produtos de uma compra finalizada! |
| /listas/finalizar-lista | POST | Finaliza a lista de compras do cliente. | http://localhost:3000/listas/finalizar-lista Enviar no body por JSON: (exemplo) { "UsuarioId": 3, "LojaId": 3 } Retorna o número do pedido, valor total da compra e a frase: Lista finalizada com sucesso |
| /listas/entrega | POST | Registra a retirada do pedido. | http://localhost:3000/listas/listas/entrega Enviar no body por JSON: (exemplo) { "numero_pedido": "25489" } Retorna a mensagem: Produto foi retirado na loja(caso o cliente tenha passado o Id da loja física no ato da finalização da lista de compras) ou Produto foi entregue na casa do cliente (caso não tenha passado Id de loja física.). |
| /lojas | GET | Retorna os detalhes de todas as lojas físicas disponíveis para retirada do produto. | http://localhost:3000/lojas |
| /produtos | GET | Retorna os detalhes de todos os produtos existentes no banco. | http://localhost:3000/produtos |
| /produtos/:produtoId | GET | Retorna os detalhes de um produto específico identificado na URL. | http://localhost:3000/produtos/:produtoId |
| /categorias | GET | Retorna todas as categorias existentes no banco. | http://localhost:3000/categorias |
Heroku:
Célia Lopes - Linkedin - oliveira.lopes.celia@gmail.com
Islene Gomes - Linkedin - islenegomes@gmail.com
Laoma Nogueira - Linkedin - laomanogueira@gmail.com
Milena Maganin - Linkedin - mimaganin@gmail.com
Sabrynna Lourenço - Linkedin - limasabrynna03@gmail.com
Thaís Minas - Linkedin - thais.2929@gmail.com
Link do projeto: https://github.com/CodeGirls-LuizaCode/backend