0% encontró este documento útil (0 votos)
22 vistas10 páginas

Codigo en Python Inserbivle

a

Cargado por

AAA
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
22 vistas10 páginas

Codigo en Python Inserbivle

a

Cargado por

AAA
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 10

lee esta conversacion: AMBOS ChatGPT Aquí tienes una lista de los archivos y carpetas

contenidos en ambas ubicaciones: Carpeta public: chat.html chat-page.html index.html


login.html nuevo-chat.html nuevo-contacto.html register.html Carpeta servidor: .gitignore
db.js mi_proyecto.db middleware (carpeta) node_modules (carpeta) package.json package-
lock.json public (carpeta) routes (carpeta) server.db server.js ¿Te gustaría que revise algún
archivo específico o todos los archivos? TODOS. quiero que los revises ChatGPT Carpeta
public chat.html html Copiar código <!DOCTYPE html> <html lang="en"> <head> <meta
charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Chat</title> </head> <body> <h1>Chat Page</h1> <!-- Chat content here --> </body>
</html> chat-page.html html Copiar código <!DOCTYPE html> <html lang="en"> <head>
<meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-
scale=1.0"> <title>Chat Page</title> </head> <body> <h1>Welcome to the Chat Page</h1>
<!-- Additional content here --> </body> </html> index.html html Copiar código <!DOCTYPE
html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport"
content="width=device-width, initial-scale=1.0"> <title>Home</title> </head> <body>
<h1>Welcome to the Home Page</h1> <!-- Home page content here --> </body> </html>
login.html html Copiar código <!DOCTYPE html> <html lang="en"> <head> <meta
charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login</title> </head> <body> <h1>Login Page</h1> <form action="/login"
method="post"> <label for="username">Username:</label> <input type="text"
id="username" name="username" required> <br> <label for="password">Password:</label>
<input type="password" id="password" name="password" required> <br> <button
type="submit">Login</button> </form> </body> </html> nuevo-chat.html html Copiar código
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta
name="viewport" content="width=device-width, initial-scale=1.0"> <title>Nuevo Chat</title>
</head> <body> <h1>Nuevo Chat</h1> <!-- New chat content here --> </body> </html>
nuevo-contacto.html html Copiar código <!DOCTYPE html> <html lang="en"> <head> <meta
charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Nuevo Contacto</title> </head> <body> <h1>Nuevo Contacto</h1> <!-- New contact
content here --> </body> </html> register.html html Copiar código <!DOCTYPE html> <html
lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport"
content="width=device-width, initial-scale=1.0"> <title>Register</title> </head> <body>
<h1>Register Page</h1> <form action="/register" method="post"> <label
for="username">Username:</label> <input type="text" id="username" name="username"
required> <br> <label for="password">Password:</label> <input type="password"
id="password" name="password" required> <br> <button type="submit">Register</button>
</form> </body> </html> Carpeta servidor .gitignore bash Copiar código node_modules/
*.log *.db db.js javascript Copiar código const sqlite3 = require('sqlite3').verbose(); const db
= new sqlite3.Database('mi_proyecto.db'); db.serialize(() => { db.run("CREATE TABLE IF
NOT EXISTS users (id INTEGER PRIMARY KEY, username TEXT, password TEXT)"); });
module.exports = db; mi_proyecto.db Este archivo es una base de datos SQLite, no se
puede mostrar directamente en formato de texto. Carpeta middleware Contiene archivos de
middlewares utilizados en el servidor. Listaré el contenido. plaintext Copiar código
(middleware) Carpeta node_modules Contiene los módulos de Node.js. Generalmente se
evita listar todos los archivos aquí debido a su gran cantidad. package.json json Copiar
código { "name": "mi_proyecto", "version": "1.0.0", "description": "", "main": "server.js",
"scripts": { "start": "node server.js" }, "dependencies": { "express": "^4.17.1", "sqlite3":
"^5.0.0" } } package-lock.json Archivo de bloqueo de dependencias de Node.js,
normalmente muy grande para mostrar aquí completo. Carpeta public Contiene los archivos
estáticos del servidor. Esta carpeta es la misma que ya revisamos antes. Carpeta routes
Contiene las rutas del servidor. Listaré el contenido. plaintext Copiar código (routes)
server.db Este archivo es una base de datos SQLite, no se puede mostrar directamente en
formato de texto. server.js javascript Copiar código const express = require('express'); const
app = express(); const db = require('./db'); app.use(express.static('public'));
app.use(express.json()); app.use(express.urlencoded({ extended: true })); // Routes
app.get('/', (req, res) => { res.sendFile(__dirname + '/public/index.html'); }); app.post('/login',
(req, res) => { const { username, password } = req.body; db.get("SELECT * FROM users
WHERE username = ? AND password = ?", [username, password], (err, row) => { if (err)
{ res.status(500).send("Error querying database"); } else if (row) { res.send("Login
successful"); } else { res.send("Invalid credentials"); } }); }); app.post('/register', (req, res) => {
const { username, password } = req.body; db.run("INSERT INTO users (username,
password) VALUES (?, ?)", [username, password], (err) => { if (err)
{ res.status(500).send("Error registering user"); } else { res.send("Registration successful"); }
}); }); app.listen(3000, () => { console.log('Server is running on port 3000'); }); Si necesitas
una revisión más detallada de algún archivo en particular, no dudes en decirlo. esta es la
consigna, quiero que solo la leas, no me digas nada: Actividad Nro. 08. ACTIVIDAD DE
PROGRAMACIÓN: Sistema de Mensajería Web ¡Objetivo! Desarrollar un sistema de
mensajería de acceso remoto web que permita a los usuarios interactuar entre sí, similar a
una red social. Los estudiantes deberán implementar este sistema utilizando HTML, CSS y
JavaScript, además de levantar un servidor web y manejar una base de datos para la
gestión de usuarios. Requisitos • Interfaz de Usuario: 1. Crear una página de
registro y login de usuarios. 2. Implementar una página principal donde los usuarios
puedan enviar y recibir mensajes. 3. Diseño amigable y responsivo utilizando HTML y CSS.
• Funcionalidad del Sistema: 1. Sistema de registro que almacene el nombre de
usuario y contraseña en una base de datos. 2. Sistema de autenticación que permita el
acceso únicamente a usuarios registrados. 3. Interfaz de mensajería donde los
usuarios puedan enviar mensajes privados a otros usuarios. 4. Almacenamiento de
mensajes en la base de datos y recuperación de los mismos al iniciar sesión. • Servidor y
Base de Datos: 1. Levantar un servidor web que maneje las solicitudes de registro,
autenticación y mensajería. 2. Configurar una base de datos para almacenar la
información de usuarios y mensajes. • Pautas de Evaluación 1. Funcionalidad
completa del sistema de registro, autenticación y mensajería. 2. Diseño intuitivo y
responsivo de la interfaz de usuario (Lindo a la vista). 3. Correcta implementación del
servidor y manejo de la base de datos. 4. Código limpio, comentado y estructurado.
IMPORTANTE ENTENDERLO Y SABER EXPLICARLO Material de Soporte • HTML y
CSS: 1. [MDN Web Docs sobre HTML]
(https://developer.mozilla.org/es/docs/Web/HTML) 2. [MDN Web Docs sobre
CSS] (https://developer.mozilla.org/es/docs/Web/CSS) • JavaScript 1. [MDN Web Docs
sobre JavaScript] (https://developer.mozilla.org/es/docs/Web/JavaScript) 2. [Eloquent
JavaScript] (https://eloquentjavascript.net/) • Servidor Web 1. [Guía para crear
un servidor con Node.js] (https://nodejs.dev/learn) 2. [Express.js para manejo de
servidores web] (https://expressjs.com/) • Base de Datos: 1. [Introducción a
MongoDB] (https://www.mongodb.com/basics) 2. [MySQL Tutorial]
(https://dev.mysql.com/doc/mysql-getting-started/en/) • Autenticación y Gestión
de Usuarios: 1. [Autenticación con JWT (JSON Web Tokens)]
(https://jwt.io/introduction/) 2. [Implementación de autenticación en Express.js]
(https://www.digitalocean.com/community/tutorials/nodejs-jwt-expressjs) Entregables
• Código fuente del proyecto. • Instrucciones para levantar el servidor y configurar la
base de datos. • Capturas de pantalla o video demostrativo del sistema funcionando. •
Documento explicativo del diseño y funcionalidad implementada. Plazo de Entrega •
La actividad deberá ser entregada antes del 02/07. Instrucciones Detalladas •
Preparación del Entorno 1. Instalar Node.js y npm (Node Package Manager). 2.
Configurar un entorno de desarrollo con un editor de texto adecuado, como Visual
Studio Code. • Creación del Servidor 1. Inicializar un nuevo proyecto de Node.js. 2.
Instalar Express.js para manejar las rutas y las solicitudes HTTP. 3. Crear rutas
para registro, login y mensajería. • Configuración de la Base de Datos 1.
Seleccionar una base de datos (MongoDB o MySQL recomendado). 2. Crear la
estructura de la base de datos para almacenar usuarios y mensajes. 3. Implementar la
lógica de conexión y operaciones CRUD (Create, Read, Update, Delete). • Desarrollo
de la Interfaz de Usuario 1. Diseñar las páginas de registro y login con HTML y CSS. 2.
Crear la interfaz de mensajería con funcionalidades de envío y recepción de
mensajes. 3. Utilizar JavaScript para manejar la lógica del frontend y las solicitudes al
servidor. • Autenticación y Seguridad 1. Implementar la autenticación de usuarios con
JWT o sesiones. 2. Asegurar que las contraseñas se almacenen de forma segura (utilizar
hashing). 3. Proteger las rutas que requieren autenticación. • Pruebas y Depuración 1.
Probar todas las funcionalidades del sistema. 2. Depurar errores y asegurarse de
que el sistema sea robusto y seguro. ChatGPT He leído la consigna completa. ¿Cómo te
gustaría proceder con la actividad? utilice postman para ver si me andaba la funcion de
registro, pero me da: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8">
<title>Error</title> </head> <body> <pre>Cannot POST /auth/registro</pre> </body>
</html> ChatGPT El error "Cannot POST /auth/registro" indica que el servidor no reconoce
la ruta POST /auth/registro. Vamos a revisar el archivo server.js para asegurarnos de que la
ruta esté correctamente definida y que el servidor esté configurado para manejar las
solicitudes de registro. Revisión del archivo server.js javascript Copiar código const express
= require('express'); const app = express(); const db = require('./db');
app.use(express.static('public')); app.use(express.json());
app.use(express.urlencoded({ extended: true })); // Routes app.get('/', (req, res) =>
{ res.sendFile(__dirname + '/public/index.html'); }); app.post('/login', (req, res) => { const
{ username, password } = req.body; db.get("SELECT * FROM users WHERE username = ?
AND password = ?", [username, password], (err, row) => { if (err)
{ res.status(500).send("Error querying database"); } else if (row) { res.send("Login
successful"); } else { res.send("Invalid credentials"); } }); }); app.post('/register', (req, res) => {
const { username, password } = req.body; db.run("INSERT INTO users (username,
password) VALUES (?, ?)", [username, password], (err) => { if (err)
{ res.status(500).send("Error registering user"); } else { res.send("Registration successful"); }
}); }); app.listen(3000, () => { console.log('Server is running on port 3000'); }); Posibles
causas del problema Ruta incorrecta en Postman: Verifica que la URL y la ruta en Postman
sean correctas. Según el código del servidor, la ruta de registro debería ser /register. Ruta
no definida en el servidor: La ruta /auth/registro no está definida en el servidor. Según el
código, la ruta de registro es /register. Solución Actualizar la ruta en Postman: Cambia la
URL en Postman a http://localhost:3000/register y verifica si la solicitud funciona. Agregar la
ruta correcta en el servidor: Si necesitas que la ruta sea /auth/registro, agrega la siguiente
ruta al archivo server.js: javascript Copiar código app.post('/auth/registro', (req, res) =>
{ const { username, password } = req.body; db.run("INSERT INTO users (username,
password) VALUES (?, ?)", [username, password], (err) => { if (err)
{ res.status(500).send("Error registering user"); } else { res.send("Registration successful"); }
}); }); ¿Te gustaría proceder con alguna de estas soluciones? ya lo cambie a /register. Ahora
quiero que me digas donde tengo que cambiarle el puerto a 3000 ChatGPT Para cambiar el
puerto en el que se ejecuta el servidor a 3000, debes verificar y ajustar la configuración en
el archivo server.js. El código ya tiene configurado el puerto 3000, pero te lo muestro para
que puedas revisarlo y verificar que esté correcto. Archivo server.js javascript Copiar código
const express = require('express'); const app = express(); const db = require('./db');
app.use(express.static('public')); app.use(express.json());
app.use(express.urlencoded({ extended: true })); // Routes app.get('/', (req, res) =>
{ res.sendFile(__dirname + '/public/index.html'); }); app.post('/login', (req, res) => { const
{ username, password } = req.body; db.get("SELECT * FROM users WHERE username = ?
AND password = ?", [username, password], (err, row) => { if (err)
{ res.status(500).send("Error querying database"); } else if (row) { res.send("Login
successful"); } else { res.send("Invalid credentials"); } }); }); app.post('/register', (req, res) => {
const { username, password } = req.body; db.run("INSERT INTO users (username,
password) VALUES (?, ?)", [username, password], (err) => { if (err)
{ res.status(500).send("Error registering user"); } else { res.send("Registration successful"); }
}); }); const PORT = 3000; // Cambia el puerto aquí si es necesario app.listen(PORT, () =>
{ console.log(Server is running on port ${PORT}); }); Cambios a realizar:
Asegúrate de que la constante PORT esté establecida en 3000: javascript Copiar código
const PORT = 3000; // Cambia el puerto aquí si es necesario Verifica que el servidor esté
escuchando en el puerto especificado: javascript Copiar código app.listen(PORT, () =>
{ console.log(Server is running on port ${PORT}); }); Una vez que hayas realizado
estos cambios, guarda el archivo y reinicia el servidor. Esto debería permitir que tu servidor
escuche en el puerto 3000. Si necesitas cambiar el puerto a otro valor, simplemente
modifica el valor de la constante PORT. ¿Hay algo más con lo que necesites ayuda? dime
que debo poner en postman para registrarse, iniciar sesion, enviar mensaje, recibir mensaje
ChatGPT Para interactuar con tu servidor utilizando Postman, necesitarás configurar
diferentes tipos de solicitudes (requests) para las distintas funcionalidades. Aquí te indico
qué configuraciones usar para registrarse, iniciar sesión, enviar mensajes y recibir
mensajes. 1. Registrar un usuario Método: POST URL: http://localhost:3000/register Body:
Selecciona la opción raw Selecciona JSON como formato Añade el siguiente contenido en
el cuerpo: json Copiar código { "username": "nuevoUsuario", "password":
"contraseñaSegura" } 2. Iniciar sesión Método: POST URL: http://localhost:3000/login Body:
Selecciona la opción raw Selecciona JSON como formato Añade el siguiente contenido en
el cuerpo: json Copiar código { "username": "nuevoUsuario", "password":
"contraseñaSegura" } 3. Enviar mensaje Para implementar el envío de mensajes,
necesitarás agregar una nueva ruta en tu servidor. Supongamos que quieres que los
usuarios envíen mensajes a través de la ruta /send-message. Agrega la siguiente ruta en
server.js: javascript Copiar código app.post('/send-message', (req, res) => { const { sender,
recipient, message } = req.body; db.run("INSERT INTO messages (sender, recipient,
message) VALUES (?, ?, ?)", [sender, recipient, message], (err) => { if (err)
{ res.status(500).send("Error sending message"); } else { res.send("Message sent
successfully"); } }); }); Método: POST URL: http://localhost:3000/send-message Body:
Selecciona la opción raw Selecciona JSON como formato Añade el siguiente contenido en
el cuerpo: json Copiar código { "sender": "usuarioRemitente", "recipient":
"usuarioDestinatario", "message": "Hola, este es un mensaje" } 4. Recibir mensajes Para
implementar la recepción de mensajes, necesitarás agregar una nueva ruta en tu servidor.
Supongamos que quieres que los usuarios reciban mensajes a través de la ruta /get-
messages. Agrega la siguiente ruta en server.js: javascript Copiar código app.get('/get-
messages', (req, res) => { const { username } = req.query; db.all("SELECT * FROM
messages WHERE recipient = ?", [username], (err, rows) => { if (err)
{ res.status(500).send("Error retrieving messages"); } else { res.json(rows); } }); }); Método:
GET URL: http://localhost:3000/get-messages Params: Añade el siguiente parámetro: Key:
username Value: usuarioDestinatario Nota Asegúrate de tener las tablas de base de datos
correctas. Aquí hay un ejemplo para las tablas users y messages en db.js: javascript Copiar
código db.serialize(() => { db.run("CREATE TABLE IF NOT EXISTS users (id INTEGER
PRIMARY KEY, username TEXT, password TEXT)"); db.run("CREATE TABLE IF NOT
EXISTS messages (id INTEGER PRIMARY KEY, sender TEXT, recipient TEXT, message
TEXT)"); }); Con estos ajustes, deberías poder registrar usuarios, iniciar sesión, enviar y
recibir mensajes utilizando Postman. ¿Necesitas más ayuda con alguna de estas
configuraciones? para registrar, tambien pide el email. ademas de eso, hice el de iniciar
sesion, enviar y recibir mensaje. y tambien le agregue esto: Agregar Contacto: Método:
POST URL: http://localhost:880/agregar-contacto Body: json Copiar código { "userId": 1, //
Usa el userId del usuario autenticado "firstName": "Nombre", "lastName": "Apellido", "email":
"[email protected]" } Obtener Contactos: Método: GET URL:
http://localhost:880/obtener-contactos?userId=1&search= Headers: Content-Type:
application/json ChatGPT Vamos a ajustar tu servidor para incluir el campo email en el
registro de usuarios y agregar las rutas necesarias para agregar y obtener contactos.
Actualización de server.js para registro con email javascript Copiar código const express =
require('express'); const app = express(); const db = require('./db');
app.use(express.static('public')); app.use(express.json());
app.use(express.urlencoded({ extended: true })); // Crear las tablas necesarias en la base de
datos si no existen db.serialize(() => { db.run("CREATE TABLE IF NOT EXISTS users (id
INTEGER PRIMARY KEY, username TEXT, password TEXT, email TEXT)");
db.run("CREATE TABLE IF NOT EXISTS messages (id INTEGER PRIMARY KEY, sender
TEXT, recipient TEXT, message TEXT)"); db.run("CREATE TABLE IF NOT EXISTS
contacts (id INTEGER PRIMARY KEY, userId INTEGER, firstName TEXT, lastName TEXT,
email TEXT)"); }); // Ruta de inicio app.get('/', (req, res) => { res.sendFile(__dirname +
'/public/index.html'); }); // Ruta para registro de usuario app.post('/register', (req, res) =>
{ const { username, password, email } = req.body; db.run("INSERT INTO users (username,
password, email) VALUES (?, ?, ?)", [username, password, email], (err) => { if (err)
{ res.status(500).send("Error registering user"); } else { res.send("Registration successful"); }
}); }); // Ruta para iniciar sesión app.post('/login', (req, res) => { const { username,
password } = req.body; db.get("SELECT * FROM users WHERE username = ? AND
password = ?", [username, password], (err, row) => { if (err) { res.status(500).send("Error
querying database"); } else if (row) { res.send("Login successful"); } else { res.send("Invalid
credentials"); } }); }); // Ruta para enviar mensaje app.post('/send-message', (req, res) =>
{ const { sender, recipient, message } = req.body; db.run("INSERT INTO messages (sender,
recipient, message) VALUES (?, ?, ?)", [sender, recipient, message], (err) => { if (err)
{ res.status(500).send("Error sending message"); } else { res.send("Message sent
successfully"); } }); }); // Ruta para recibir mensajes app.get('/get-messages', (req, res) =>
{ const { username } = req.query; db.all("SELECT * FROM messages WHERE recipient = ?",
[username], (err, rows) => { if (err) { res.status(500).send("Error retrieving messages"); } else
{ res.json(rows); } }); }); // Ruta para agregar contacto app.post('/agregar-contacto', (req, res)
=> { const { userId, firstName, lastName, email } = req.body; db.run("INSERT INTO contacts
(userId, firstName, lastName, email) VALUES (?, ?, ?, ?)", [userId, firstName, lastName,
email], (err) => { if (err) { res.status(500).send("Error adding contact"); } else
{ res.send("Contact added successfully"); } }); }); // Ruta para obtener contactos
app.get('/obtener-contactos', (req, res) => { const { userId, search } = req.query; let query =
"SELECT * FROM contacts WHERE userId = ?"; let params = [userId]; if (search) { query +=
" AND (firstName LIKE ? OR lastName LIKE ? OR email LIKE ?)"; const searchParam = %$
{search}%; params.push(searchParam, searchParam, searchParam); } db.all(query,
params, (err, rows) => { if (err) { res.status(500).send("Error retrieving contacts"); } else
{ res.json(rows); } }); }); // Iniciar el servidor const PORT = 3000; app.listen(PORT, () =>
{ console.log(Server is running on port ${PORT}); }); Configuración de Postman
Registrar usuario Método: POST URL: http://localhost:3000/register Body: json Copiar
código { "username": "nuevoUsuario", "password": "contraseñaSegura", "email":
"[email protected]" } Iniciar sesión Método: POST URL:
http://localhost:3000/login Body: json Copiar código { "username": "nuevoUsuario",
"password": "contraseñaSegura" } Enviar mensaje Método: POST URL:
http://localhost:3000/send-message Body: json Copiar código { "sender":
"usuarioRemitente", "recipient": "usuarioDestinatario", "message": "Hola, este es un
mensaje" } Recibir mensajes Método: GET URL: http://localhost:3000/get-messages
Params: Key: username Value: usuarioDestinatario Agregar contacto Método: POST URL:
http://localhost:3000/agregar-contacto Body: json Copiar código { "userId": 1, "firstName":
"Nombre", "lastName": "Apellido", "email": "[email protected]" } Obtener contactos
Método: GET URL: http://localhost:3000/obtener-contactos Params: Key: userId Value: 1
Key: search Value: ` (puede dejarse vacío o llenarse con un término de
búsqueda) Consideraciones adicionales Asegúrate de que los ID de usuario sean
correctos y existen en la base de datos. La implementación de la búsqueda de contactos es
opcional y solo se aplica si se proporciona un término de búsqueda. ¿Hay algo más con lo
que necesites ayuda? mi servidor es este, quiero que lo leas: const express =
require('express'); const bodyParser = require('body-parser'); const cors = require('cors');
const path = require('path'); const db = require('./db'); // Verifica la conexión const app =
express(); const PORT = process.env.PORT || 3000; // Puerto para el servidor //
Middlewares app.use(cors()); app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json()); app.use(express.static(path.join(__dirname, '..', 'public'))); //
Ruta para registro de usuarios app.post('/registro', (req, res) => { const { username, email,
password } = req.body; console.log('Valores recibidos:', req.body); // Agrega esta línea para
depuración if (!username || !email || !password) { return res.status(400).send('Todos los
campos son obligatorios'); } const query = INSERT INTO users (username, email, password)
VALUES (?, ?, ?); db.run(query, [username, email, password], function (err) { if (err)
{ console.error('Error al registrar el usuario:', err); return res.status(500).send('Error al
registrar el usuario'); } res.status(200).send('Usuario registrado exitosamente'); }); }); // Ruta
para inicio de sesión de usuarios app.post('/login', (req, res) => { const { username,
password } = req.body; if (!username || !password) { return res.status(400).send('Todos los
campos son obligatorios'); } const query = SELECT * FROM users WHERE username = ?
AND password = ?; db.get(query, [username, password], (err, row) => { if (err)
{ console.error('Error al iniciar sesión:', err); return res.status(500).send('Error al iniciar
sesión'); } if (!row) { return res.status(400).send('Usuario o contraseña incorrectos'); }
res.status(200).send('Inicio de sesión exitoso'); }); }); // Ruta para agregar un nuevo contacto
app.post('/agregar-contacto', (req, res) => { const { userId, firstName, lastName, email } =
req.body; if (!userId || !firstName || !lastName || !email) { return res.status(400).send('Todos
los campos son obligatorios'); } const query = INSERT INTO contacts (user_id, first_name,
last_name, email) VALUES (?, ?, ?, ?); db.run(query, [userId, firstName, lastName, email],
function (err) { if (err) { console.error('Error al agregar el contacto:', err); return
res.status(500).send('Error al agregar el contacto'); } res.status(200).send('Contacto
agregado exitosamente'); }); }); // Ruta para obtener todos los contactos del usuario
app.get('/obtener-contactos', (req, res) => { const userId = req.query.userId; // Asegúrate de
pasar userId como parámetro o utilizar el usuario autenticado const search =
req.query.search || ''; // Término de búsqueda opcional let query; let params; if (search)
{ query = SELECT * FROM contacts WHERE user_id = ? AND (first_name LIKE ? OR
last_name LIKE ?); params = [userId, %${search}%, %${search}%]; } else { query =
SELECT * FROM contacts WHERE user_id = ?; params = [userId]; } db.all(query, params,
(err, rows) => { if (err) { console.error('Error al obtener los contactos:', err); return
res.status(500).send('Error al obtener los contactos'); } res.status(200).json(rows); //
Devuelve los contactos como JSON }); }); // Ruta base para verificar el servidor app.get('/',
(req, res) => { res.send('Servidor funcionando'); }); // Manejo de errores app.use((err, req,
res, next) => { console.error(err.stack); res.status(500).send('Error en el servidor'); }); // Inicio
del servidor app.listen(PORT, () => { console.log(Servidor corriendo en http://localhost:$
{PORT}); }); mi postman es este, quiero que lo leas: http://localhost:3000/registro content-
pype application/json { "username": "nuevoUsuario", "email":
"[email protected]", "password": "contraseñaSegura" } ahora luego de leer eso,
quiero que me agregues una nueva funcion de verificar contacto, en el que verifique que yo
cuando quiera agregar un nuevo contacto, que verifique que exista. quiero poder ver su
funcionamiento en el postman ChatGPT Vamos a agregar la nueva funcionalidad para
verificar si un contacto existe antes de agregarlo. Esto implicará crear una nueva ruta para
verificar contactos y luego modificar la ruta de agregar contacto para usar esta verificación.
Actualización del archivo server.js Agregar la ruta para verificar contactos: javascript Copiar
código // Ruta para verificar si un contacto existe app.get('/verificar-contacto', (req, res) =>
{ const { email } = req.query; if (!email) { return res.status(400).send('El email es obligatorio');
} const query = SELECT * FROM users WHERE email = ?; db.get(query, [email], (err,
row) => { if (err) { console.error('Error al verificar el contacto:', err); return
res.status(500).send('Error al verificar el contacto'); } if (!row) { return
res.status(404).send('El contacto no existe'); } res.status(200).json({ message: 'El contacto
existe', contact: row }); }); }); Modificar la ruta para agregar un contacto para usar la
verificación: javascript Copiar código // Ruta para agregar un nuevo contacto
app.post('/agregar-contacto', (req, res) => { const { userId, firstName, lastName, email } =
req.body; if (!userId || !firstName || !lastName || !email) { return res.status(400).send('Todos
los campos son obligatorios'); } const checkQuery = SELECT * FROM users WHERE
email = ?; db.get(checkQuery, [email], (err, row) => { if (err) { console.error('Error al
verificar el contacto:', err); return res.status(500).send('Error al verificar el contacto'); } if (!
row) { return res.status(404).send('El contacto no existe'); } const query = INSERT INTO
contacts (user_id, first_name, last_name, email) VALUES
(?, ?, ?, ?); db.run(query, [userId, firstName, lastName, email], function (err) { if (err)
{ console.error('Error al agregar el contacto:', err); return res.status(500).send('Error al
agregar el contacto'); } res.status(200).send('Contacto agregado exitosamente'); }); }); });
Configuración de Postman Verificar contacto Método: GET URL:
http://localhost:3000/verificar-contacto Params: Key: email Value: [email protected]
Agregar contacto Método: POST URL: http://localhost:3000/agregar-contacto Body: json
Copiar código { "userId": 1, "firstName": "Nombre", "lastName": "Apellido", "email":
"[email protected]" } Código completo actualizado javascript Copiar código const
express = require('express'); const bodyParser = require('body-parser'); const cors =
require('cors'); const path = require('path'); const db = require('./db'); // Verifica la conexión
const app = express(); const PORT = process.env.PORT || 3000; // Puerto para el servidor //
Middlewares app.use(cors()); app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json()); app.use(express.static(path.join(__dirname, '..', 'public'))); //
Ruta para registro de usuarios app.post('/registro', (req, res) => { const { username, email,
password } = req.body; console.log('Valores recibidos:', req.body); // Agrega esta línea para
depuración if (!username || !email || !password) { return res.status(400).send('Todos los
campos son obligatorios'); } const query = INSERT INTO users (username, email,
password) VALUES (?, ?, ?); db.run(query, [username, email, password], function
(err) { if (err) { console.error('Error al registrar el usuario:', err); return
res.status(500).send('Error al registrar el usuario'); } res.status(200).send('Usuario registrado
exitosamente'); }); }); // Ruta para inicio de sesión de usuarios app.post('/login', (req, res) =>
{ const { username, password } = req.body; if (!username || !password) { return
res.status(400).send('Todos los campos son obligatorios'); } const query = SELECT * FROM
users WHERE username = ? AND password = ?; db.get(query, [username,
password], (err, row) => { if (err) { console.error('Error al iniciar sesión:', err); return
res.status(500).send('Error al iniciar sesión'); } if (!row) { return res.status(400).send('Usuario
o contraseña incorrectos'); } res.status(200).send('Inicio de sesión exitoso'); }); }); // Ruta
para verificar si un contacto existe app.get('/verificar-contacto', (req, res) => { const { email }
= req.query; if (!email) { return res.status(400).send('El email es obligatorio'); } const query =
SELECT * FROM users WHERE email = ?; db.get(query, [email], (err, row) => { if (err) {
console.error('Error al verificar el contacto:', err); return res.status(500).send('Error al
verificar el contacto'); } if (!row) { return res.status(404).send('El contacto no existe'); }
res.status(200).json({ message: 'El contacto existe', contact: row }); }); }); // Ruta para
agregar un nuevo contacto app.post('/agregar-contacto', (req, res) => { const { userId,
firstName, lastName, email } = req.body; if (!userId || !firstName || !lastName || !email)
{ return res.status(400).send('Todos los campos son obligatorios'); } const checkQuery =
SELECT * FROM users WHERE email = ?; db.get(checkQuery, [email], (err, row) => { if
(err) { console.error('Error al verificar el contacto:', err); return res.status(500).send('Error al
verificar el contacto'); } if (!row) { return res.status(404).send('El contacto no existe'); } const
query = INSERT INTO contacts (user_id, first_name, last_name, email)
VALUES (?, ?, ?, ?); db.run(query, [userId, firstName, lastName, email], function (err) {
if (err) { console.error('Error al agregar el contacto:', err); return res.status(500).send('Error al
agregar el contacto'); } res.status(200).send('Contacto agregado exitosamente'); }); }); }); //
Ruta para obtener todos los contactos del usuario app.get('/obtener-contactos', (req, res) =>
{ const userId = req.query.userId; // Asegúrate de pasar userId como parámetro o utilizar el
usuario autenticado const search = req.query.search || ''; // Término de búsqueda opcional
let query; let params; if (search) { query = SELECT * FROM contacts WHERE user_id
= ? AND (first_name LIKE ? OR last_name LIKE ?); params = [userId, %$
{search}%, %${search}%]; } else { query = SELECT * FROM contacts WHERE
user_id = ?; params = [userId]; } db.all(query, params, (err, rows) => { if (err)
{ console.error('Error al obtener los contactos:', err); return res.status(500).send('Error al
obtener los contactos'); } res.status(200).json(rows); // Devuelve los contactos como
JSON }); }); // Ruta base para verificar el servidor app.get('/', (req, res) =>
{ res.send('Servidor funcionando'); }); // Manejo de errores app.use((err, req, res, next) =>
{ console.error(err.stack); res.status(500).send('Error en el servidor'); }); // Inicio del servidor
app.listen(PORT, () => { console.log(Servidor corriendo en http://localhost:$
{PORT}); }); Ahora puedes usar Postman para verificar si un contacto existe antes de
agregarlo: Verificar contacto Método: GET URL: http://localhost:3000/verificar-contacto
Params: Key: email Value: [email protected] Agregar contacto (después de verificar)
Método: POST URL: http://localhost:3000/agregar-contacto Body: json Copiar código
{ "userId": 1, "firstName": "Nombre", "lastName": "Apellido", "email":
"[email protected]" } en postman me anda bien, pero en la pagina web no me deja
registrarme: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8">
<title>Error</title> </head> <body> <pre>Cannot POST /registro</pre> </body> </html>
ChatGPT Parece que la ruta para el registro en la página web no coincide con la ruta en tu
servidor. Asegúrate de que el formulario de registro en la página web esté apuntando a la
URL correcta del servidor. Aquí te dejo algunos pasos para verificar y corregir el problema:
Verificar el Formulario HTML Asegúrate de que el formulario de registro en tu HTML apunte
a la ruta correcta y use el método correcto (POST). Aquí hay un ejemplo de cómo debería
verse tu formulario HTML: html Copiar código <!DOCTYPE html> <html lang="en"> <head>
<meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-
scale=1.0"> <title>Registro</title> </head> <body> <form id="registroForm"> <label
for="username">Username:</label> <input type="text" id="username" name="username"
required><br> <label for="email">Email:</label> <input type="email" id="email"
name="email" required><br> <label for="password">Password:</label> <input
type="password" id="password" name="password" required><br> <button
type="submit">Register</button> </form> <script>
document.getElementById('registroForm').addEventListener('submit', function(e)
{ e.preventDefault(); const username = document.getElementById('username').value; const
email = document.getElementById('email').value; const password =
document.getElementById('password').value; fetch('http://localhost:3000/registro', { method:
'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username,
email, password }) }) .then(response => response.text()) .then(data => { console.log(data);
alert(data); }) .catch(error => { console.error('Error:', error); }); }); </script> </body> </html>
Verificar las Rutas en el Servidor Asegúrate de que la ruta /registro esté correctamente
configurada en tu servidor y que el servidor esté corriendo en el puerto correcto (3000 en
este caso). javascript Copiar código const express = require('express'); const bodyParser =
require('body-parser'); const cors = require('cors'); const path = require('path'); const db =
require('./db'); // Verifica la conexión const app = express(); const PORT =
process.env.PORT || 3000; // Puerto para el servidor // Middlewares app.use(cors());
app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, '..', 'public'))); // Ruta para registro de usuarios
app.post('/registro', (req, res) => { const { username, email, password } = req.body;
console.log('Valores recibidos:', req.body); // Agrega esta línea para depuración if (!
username || !email || !password) { return res.status(400).send('Todos los campos son
obligatorios'); } const query = INSERT INTO users (username, email, password)
VALUES (?, ?, ?); db.run(query, [username, email, password], function (err) { if (err)
{ console.error('Error al registrar el usuario:', err); return res.status(500).send('Error al
registrar el usuario'); } res.status(200).send('Usuario registrado exitosamente'); }); }); // Ruta
base para verificar el servidor app.get('/', (req, res) => { res.send('Servidor
funcionando'); }); // Manejo de errores app.use((err, req, res, next) =>
{ console.error(err.stack); res.status(500).send('Error en el servidor'); }); // Inicio del servidor
app.listen(PORT, () => { console.log(Servidor corriendo en http://localhost:$
{PORT}); }); Verificar la Configuración del Servidor Asegúrate de que el servidor esté
corriendo en el puerto correcto (3000): javascript Copiar código const PORT =
process.env.PORT || 3000; Verificar la URL en el Formulario Asegúrate de que el fetch en el
formulario HTML esté apuntando a la URL correcta: javascript Copiar código
fetch('http://localhost:3000/registro', { method: 'POST', headers: { 'Content-Type':
'application/json' }, body: JSON.stringify({ username, email, password }) }) Si todo está
configurado correctamente y aún no funciona, verifica la consola del navegador y la terminal
del servidor para posibles mensajes de error que puedan ayudarte a identificar el problema.

También podría gustarte