v1.0 · Node.js HTTP

Documentación de la API

Servidor HTTP minimalista construido con los módulos nativos http y url de Node.js.

Base URL https://app.eivannor.com
GET /primero

Endpoint de ejemplo que devuelve un saludo fijo.

Respuesta

Status200 OK
Content-Typetext/plain
BodyHola desde el primero.

            
GET /suma

Suma dos números recibidos como parámetros de consulta (query string).

Parámetros

NombreTipoRequeridoDescripción
no1numberPrimer sumando
no2numberSegundo sumando

Ejemplo

GET /suma?no1=5&no2=10  →  "15"

Respuesta

Status200 OK
Content-Typetext/plain
BodyResultado de la suma como string

            
⚠️ Sin validación de entrada. Ver Recomendaciones.
GET /prueba

Endpoint informativo de prueba.

Respuesta

Status200 OK
Content-Typetext/plain
BodySiga de largo, nada que ver aqui

            
GET /json

Devuelve una respuesta JSON con un mensaje de estado.

Respuesta

Status202 Accepted
Content-Typeapplication/json
Body
{ "texto": "Funcionando" }

            
404 /* (cualquier ruta no definida)

Cualquier ruta no reconocida devuelve un mensaje de error 404.

Respuesta

Status404 Not Found
Content-Typetext/plain
BodyPá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. Usar server.listen(3000) o leer de process.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 Accepted implica procesamiento asíncrono. Considerar usar 200 OK si la respuesta es inmediata.
  • Método HTTP: Actualmente todos los endpoints aceptan cualquier método. Validar req.method === 'GET' donde aplique.