Untitled

 avatar
unknown
javascript
6 months ago
2.7 kB
3
Indexable
const http = require("http");
const cursos = require("./cursos");

const servidor = http.createServer((req, res) => {
  // Configuración de las cabeceras comunes para todas las solicitudes
  res.setHeader("Content-Type", "application/json");

  switch (req.method) {
    case "GET":
      return manejarSolicitudesGET(req, res);
    case "POST":
      return manejarSolicitudesPOST(req, res);
    default:
      res.statusCode = 501; // 501 Not Implemented
      return res.end(
        JSON.stringify({ error: `Método ${req.method} no soportado` })
      );
  }
});

const port = 3000;
servidor.listen(port, () =>
  console.log(`Servidor corriendo en puerto ${port}`)
);

function manejarSolicitudesGET(req, res) {
  const path = req.url;

  if (path === "/") {
    res.statusCode = 200;
    res.end(JSON.stringify({ mensaje: "Bienvenido a la API de cursos" }));
  } else if (path === "/cursos") {
    res.end(JSON.stringify(cursos));
  } else {
    res.statusCode = 404; // 404 Not Found
    res.end(JSON.stringify({ error: "Recurso no encontrado" }));
  }
}

// Manejar solicitudes POST
function manejarSolicitudesPOST(req, res) {
  const path = req.url;

  if (path === "/cursos/programacion") {
    let body = "";

    // Escuchar los datos que llegan en partes (chunks)
    req.on("data", (content) => {
      body += content.toString();
    });

    // Cuando los datos terminan de llegar
    req.on("end", () => {
      try {
        const datos = JSON.parse(body);
        res.statusCode = 201; 
        res.end(
          JSON.stringify({
            mensaje: "Curso de programación recibido correctamente",
            curso: datos,
          })
        );
      } catch (error) {
        res.statusCode = 400; // 400 Bad Request
        res.end(JSON.stringify({ error: "Datos inválidos en la solicitud" }));
      }
    });
  } else {
    res.statusCode = 404; // 404 Not Found
    res.end(JSON.stringify({ error: "Ruta no encontrada para POST" }));
  }
}


const infoCursos = {
  programacion: [
    {
      id: 1,
      titulo: "Aprende Python",
      lenguaje: "python",
      vistas: 15000,
      nivel: "basico",
    },

    {
      id: 2,
      titulo: "Pyhton intermedio",
      lenguaje: "python",
      vistas: 13553,
      nivel: "intermedio",
    },

    {
      id: 3,
      titulo: "Aprende javascript",
      lenguaje: "javascript",
      vistas: 102223,
      nivel: "basico",
    },
  ],

  matematicas: [
    {
      id: 1,
      titulo: "Aprende Calculo",
      tema: "calculo",
      vistas: 12427,
      nivel: "basico",
    },

    {
      id: 2,
      titulo: "Aprende Algebra",
      tema: "algebra",
      vistas: 15722,
      nivel: "intermedio",
    },
  ],
};

module.exports = infoCursos;
Editor is loading...
Leave a Comment