GET
/primero
Endpoint de ejemplo que devuelve un saludo fijo.
Respuesta
| Status | 200 OK |
|---|---|
| Content-Type | text/plain |
| Body | Hola desde el primero. |
GET
/suma
Suma dos números recibidos como parámetros de consulta (query string).
Parámetros
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
no1 | number | Sí | Primer sumando |
no2 | number | Sí | Segundo sumando |
Ejemplo
GET /suma?no1=5&no2=10 → "15"
Respuesta
| Status | 200 OK |
|---|---|
| Content-Type | text/plain |
| Body | Resultado de la suma como string |
⚠️ Sin validación de entrada. Ver Recomendaciones.
GET
/prueba
Endpoint informativo de prueba.
Respuesta
| Status | 200 OK |
|---|---|
| Content-Type | text/plain |
| Body | Siga de largo, nada que ver aqui |
GET
/json
Devuelve una respuesta JSON con un mensaje de estado.
Respuesta
| Status | 202 Accepted |
|---|---|
| Content-Type | application/json |
| Body | { "texto": "Funcionando" } |
404
/* (cualquier ruta no definida)
Cualquier ruta no reconocida devuelve un mensaje de error 404.
Respuesta
| Status | 404 Not Found |
|---|---|
| Content-Type | text/plain |
| Body | Página {ruta} no encontrada |
⚠️ Recomendaciones del Analista
1. Validación de entrada en /suma
Problema: El endpoint actualmente no valida los parámetros no1 y no2. Si se omiten o se envían valores no numéricos, Number() retornará NaN y la respuesta será literalmente la cadena "NaN", lo cual confunde a los clientes.
Casos problemáticos detectados:
/suma→"NaN"(sin parámetros)/suma?no1=hola&no2=5→"NaN"/suma?no1=5→"NaN"(parámetro faltante)
Solución sugerida:
case "/suma":
var urlConParametros = url.parse(req.url, true);
var params = urlConParametros.query;
var no1 = Number(params.no1);
var no2 = Number(params.no2);
if (isNaN(no1) || isNaN(no2)) {
res.writeHead(400, {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
});
res.end(JSON.stringify({
error: "Parámetros inválidos",
mensaje: "no1 y no2 deben ser números válidos"
}));
return;
}
enviarRespuesta(res, String(no1 + no2));
break;
2. Mejoras adicionales sugeridas
- Puerto explícito:
server.listen()sin argumentos asigna un puerto aleatorio. Usarserver.listen(3000)o leer deprocess.env.PORT. - Logging: Agregar registro de peticiones para auditoría y debugging.
- CORS configurable: Reemplazar el
*por una lista blanca de dominios permitidos en producción. - Status code en /json: El código
202 Acceptedimplica procesamiento asíncrono. Considerar usar200 OKsi la respuesta es inmediata. - Método HTTP: Actualmente todos los endpoints aceptan cualquier método. Validar
req.method === 'GET'donde aplique.