{"id":25930552,"url":"https://github.com/odevthomas/nodecrude-api-mysql-react","last_synced_at":"2025-03-03T23:21:41.871Z","repository":{"id":277887394,"uuid":"933805105","full_name":"odevthomas/NodeCrude-Api-Mysql-React","owner":"odevthomas","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-16T19:15:50.000Z","size":1561,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-16T20:19:52.138Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/odevthomas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-16T18:18:36.000Z","updated_at":"2025-02-16T19:15:53.000Z","dependencies_parsed_at":"2025-02-16T20:30:04.677Z","dependency_job_id":null,"html_url":"https://github.com/odevthomas/NodeCrude-Api-Mysql-React","commit_stats":null,"previous_names":["odevthomas/nodecrude-api-mysql-react"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odevthomas%2FNodeCrude-Api-Mysql-React","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odevthomas%2FNodeCrude-Api-Mysql-React/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odevthomas%2FNodeCrude-Api-Mysql-React/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odevthomas%2FNodeCrude-Api-Mysql-React/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/odevthomas","download_url":"https://codeload.github.com/odevthomas/NodeCrude-Api-Mysql-React/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241753800,"owners_count":20014362,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-03T23:21:38.543Z","updated_at":"2025-03-03T23:21:41.082Z","avatar_url":"https://github.com/odevthomas.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NodeCrud API\n![Uploading generated_image_1_1739738155942.png…]()\n\n## 📋 Descrição\n\nNodeCrud API é um projeto completo de API REST para gerenciamento de usuários, implementando operações CRUD (Create, Read, Update, Delete). O projeto foi desenvolvido com foco em simplicidade e boas práticas.\n\n## 🛠 Tecnologias Utilizadas\n\n- **Node.js**\n- **Express.js**\n- **MySQL**\n- **Nodemon**\n- **Dotenv**\n- **Cors**\n- **Body-parser**\n\n## 📁 Estrutura do Projeto\n\n```\n/api\n├── controllers/\n│   └── user.js\n├── routes/\n│   └── user.js\n├── config/\n│   └── db.js\n├── .env\n├── index.js\n└── server.js\n```\n\n## 🚀 Configuração e Instalação\n\n### Pré-requisitos\n\n- Node.js instalado\n- MySQL instalado e configurado\n- NPM ou Yarn\n\n### 1. Configuração do Banco de Dados\n\n```sql\nCREATE DATABASE nodemysql;\n\nUSE nodemysql;\n\nCREATE TABLE usuarios (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    nome VARCHAR(100) NOT NULL,\n    email VARCHAR(100) NOT NULL UNIQUE,\n    password VARCHAR(100) NOT NULL,\n    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n```\n\n### 2. Instalação das Dependências\n\n```bash\nnpm install express mysql2 nodemon dotenv cors body-parser\n# ou\nyarn add express mysql2 nodemon dotenv cors body-parser\n```\n\n### 3. Configuração do Ambiente\n\nCrie um arquivo `.env` na raiz do projeto com o seguinte conteúdo:\n\n```ini\nDB_HOST=localhost\nDB_USER=seu_usuario\nDB_PASS=sua_senha\nDB_NAME=nodemysql\nPORT=8800\n```\n\n## 📦 Estrutura de Arquivos\n\n### 1. `server.js`\n\n```javascript\nconst express = require('express');\nconst app = express();\nconst cors = require('cors');\nconst bodyParser = require('body-parser');\nconst userRoutes = require('./routes/user');\n\nrequire('dotenv').config();\n\napp.use(cors());\napp.use(bodyParser.json());\n\n// Rotas\napp.use('/api', userRoutes);\n\nconst PORT = process.env.PORT || 8800;\napp.listen(PORT, () =\u003e {\n    console.log(`Servidor rodando na porta ${PORT}`);\n});\n```\n\n### 2. `config/db.js`\n\n```javascript\nconst mysql = require('mysql2');\nrequire('dotenv').config();\n\nconst connection = mysql.createPool({\n    host: process.env.DB_HOST,\n    user: process.env.DB_USER,\n    password: process.env.DB_PASS,\n    database: process.env.DB_NAME,\n    waitForConnections: true,\n    connectionLimit: 10,\n    queueLimit: 0\n});\n\nmodule.exports = connection.promise();\n```\n\n### 3. `routes/user.js`\n\n```javascript\nconst express = require('express');\nconst router = express.Router();\nconst userController = require('../controllers/user');\n\nrouter.post('/usuarios', userController.createUser);\nrouter.get('/usuarios', userController.getUsers);\nrouter.get('/usuarios/:id', userController.getUserById);\nrouter.put('/usuarios/:id', userController.updateUser);\nrouter.delete('/usuarios/:id', userController.deleteUser);\n\nmodule.exports = router;\n```\n\n### 4. `controllers/user.js`\n\n```javascript\nconst db = require('../config/db');\n\nexports.createUser = async (req, res) =\u003e {\n    try {\n        const { nome, email, password } = req.body;\n        const [result] = await db.execute(\n            'INSERT INTO usuarios (nome, email, password) VALUES (?, ?, ?)',\n            [nome, email, password]\n        );\n        res.status(201).json({ message: 'Usuário criado com sucesso', id: result.insertId });\n    } catch (error) {\n        res.status(500).json({ error: error.message });\n    }\n};\n\n// Implementar os demais métodos (getUsers, getUserById, updateUser, deleteUser) aqui...\n```\n\n## 🚀 Executando o Projeto\n\n### Desenvolvimento\n\n```bash\nnpm run dev\n# ou\nyarn dev\n```\n\n### Produção\n\n```bash\nnpm start\n# ou\nyarn start\n```\n\n## 📡 Endpoints da API\n\n| Método | Rota                | Descrição                  |\n|--------|---------------------|----------------------------|\n| POST   | /api/usuarios       | Criar novo usuário         |\n| GET    | /api/usuarios       | Listar todos usuários      |\n| GET    | /api/usuarios/:id   | Buscar usuário por ID      |\n| PUT    | /api/usuarios/:id   | Atualizar usuário          |\n| DELETE | /api/usuarios/:id   | Deletar usuário            |\n\n## 📝 Exemplos de Requisições\n\n### Criar Usuário\n\n```bash\nPOST /api/usuarios\nContent-Type: application/json\n\n{\n    \"nome\": \"João Silva\",\n    \"email\": \"joao@email.com\",\n    \"password\": \"senha123\"\n}\n```\n\n### Atualizar Usuário\n\n```bash\nPUT /api/usuarios/1\nContent-Type: application/json\n\n{\n    \"nome\": \"João Silva Atualizado\",\n    \"email\": \"joao.novo@email.com\",\n    \"password\": \"novaSenha123\"\n}\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fodevthomas%2Fnodecrude-api-mysql-react","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fodevthomas%2Fnodecrude-api-mysql-react","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fodevthomas%2Fnodecrude-api-mysql-react/lists"}