Este projeto consiste em uma API para a Nunes Sports, que oferece operações de CRUD (Create, Read, Update, Delete) para produtos da loja. A solução inclui uma base de dados MongoDB com uma tabela de produtos, contendo campos como Nome, Código, Descrição e Preço. Além disso, uma interface web foi desenvolvida para permitir que usuários visualizem, criem, editem e excluam produtos, refletindo todas as ações no banco de dados.
- Base de dados com uma tabela 'produtos' com os campos:
- Nome do produto
- Código do produto
- Descrição do produto
- Preço do produto
- Utilização de JSON como formato de comunicação
- Banco de dados MongoDB Atlas na nuvem
- Node.js (LTS)
- Express 4.17.1
- Mongoose (Object Data Modeling para MongoDB)
- MongoDB Atlas para armazenamento de dados
- Render para hospedagem
- Insomnia para testes de API
-
Clone este repositório (Opcional: Se você estiver interessado em examinar o código-fonte ou contribuir para o projeto).
-
Configure seu ambiente de desenvolvimento com as tecnologias mencionadas.
-
Execute a aplicação Node.js. Utilize o seguinte comando no terminal:
npm start # ou node src/server.js
-
Utilize os seguintes endpoints para realizar operações na API:
-
Listar Todos os Produtos:
[GET] http://localhost:3001/products/listar
-
Buscar Produto por ID:
[GET] http://localhost:3001/products//buscar/:productId
-
Cadastrar Produto:
[POST] http://localhost:3001/products/cadastrar
-
Atualizar Produto por ID:
[PUT] http://localhost:3001/products/atualizar/:productId
-
Deletar Produto por ID:
[DELETE] http://localhost:3001/products/deletar/:productId
Certifique-se de que as tecnologias necessárias estejam configuradas no seu ambiente antes de utilizar os endpoints. Você pode usar ferramentas como o INSOMNIA
, cURL
ou POSTMAN
para realizar as operações na API.
Você pode utilizar o cURL para testar os endpoints diretamente do terminal ou linha de comando. Abaixo estão alguns exemplos básicos:
curl -X POST -H "Content-Type: application/json" -d '{"nome":"Nome do Produto", "codigo":"12345", "descricao":"Descrição do Produto", "preco":99.99}' http://localhost:3001/products/cadastrar
curl -X PUT -H "Content-Type: application/json" -d '{"nome":"Novo Nome", "codigo":"54321", "descricao":"Nova Descrição", "preco":129.99}' http://localhost:3001/products/atualizar/:productId
curl -X GET http://localhost:3001/products/listar
curl -X GET http://localhost:3001/products/buscar/:productId
curl -X DELETE http://localhost:3001/products/deletar/:productId
A seguir estão os endpoints disponíveis do projeto hospedado:
-
-
URL: https://nunes-sports-axl7.onrender.com/products/cadastrar
-
Método: POST
-
Input:
- Campos necessários para cadastro (ex: nome, código, descrição, preço)
{ "nome": "Nome do Produto", "codigo": "12345", "descricao": "Descrição do Produto", "preco": 99.99 }
- Output (sucesso):
- Retorno com informações do produto cadastrado
{ "message": "Produto 'Nome do Produto' cadastrado com Sucesso!!!", "id": "productId", "data_criacao": "Data de Criação", "data_atualizacao": "Data de Atualização" }
- Erro:
- Internal Server Error
-
-
-
URL: https://nunes-sports-axl7.onrender.com/products/atualizar/:productId
-
Método: PUT
-
URL Params:
:productId
- ID do produto a ser atualizado
-
Input:
- Campos a serem atualizados (ex: nome, código, descrição, preço) em formato JSON
{ "nome": "Novo Nome", "codigo": "54321", "descricao": "Nova Descrição", "preco": 129.99 }
- Output (sucesso):
- Retorno com informações atualizadas do produto
{ "message": "Produto atualizado com sucesso", "id": "productId", "data_criacao": "Data de Criação", "data_atualizacao": "Data de Atualização" }
- Erros:
- Internal Server Error
-
-
-
Método: GET
-
Output (sucesso):
- Retorno com todos os Produtos listados
[ { "nome": "Nome do Produto 1", "codigo": "12345", "descricao": "Descrição do Produto 1", "preco": 99.99, "data_criacao": "Data de Criação", "data_atualizacao": "Data de Atualização" }, { "nome": "Nome do Produto 2", "codigo": "67890", "descricao": "Descrição do Produto 2", "preco": 149.99, "data_criacao": "Data de Criação", "data_atualizacao": "Data de Atualização" } // ... ]
- Erros:
- Internal Server Error
-
-
URL: https://nunes-sports-axl7.onrender.com/products/buscar/:productId
-
Método: PUT
-
URL Params:
:productId
- ID do produto
-
Output (sucesso):
- Retorno com as informações do produto
{ "nome": "Nome do Produto", "codigo": "12345", "descricao": "Descrição do Produto", "preco": 99.99, "data_criacao": "Data de Criação", "data_atualizacao": "Data de Atualização" }
- Erros:
- Produto não encontrado
- Internal Server Error
-
-
-
URL: https://nunes-sports-axl7.onrender.com/products/deletar/:productId
-
Método: DELETE
-
URL Params:
:productId
- ID do Produto a ser deletado
-
Output (sucesso):
- Retorno com mensagem de sucesso
{ "message": "Produto deletado com sucesso!!!" }
- Erros:
- Produto não encontrado
- Internal Server Error
-
A estrutura deste projeto segue a organização abaixo:
src
: Contém o código-fonte Node.js da aplicação.config
: Armazena configurações específicas da aplicação.controllers
: Responsável por conter os controladores da lógica de negócios.database
: Mantém os arquivos relacionados ao banco de dados, como conexões e configurações.middlewares
: Contém middlewares utilizados na aplicação.models
: Guarda os modelos de dados utilizados na aplicação.server.js
: Ponto de entrada da aplicação, contendo as configurações e definição das rotas da API.
O projeto utiliza o npm (Node Package Manager) para:
- Gerenciamento de Dependências: Todas as dependências do projeto são definidas no arquivo
package.json
e podem ser instaladas usando o comando:npm install
- ESLint: O projeto utiliza o ESLint para manter a consistência no estilo do código. Os padrões de estilo são definidos no arquivo
.eslintrc.json
e a verificação pode ser feita com o comando:npm run lint