Implementación avanzada para endpoints en el backend

Aquí tienes una implementación avanzada para endpoints en el backend que garantizan la exportación de datos en múltiples formatos como JSON, XML, CSV, YAML, HTML, y texto plano.

Backend Mejorado (Node.js con Express)

const express = require("express");
const fs = require("fs");
const path = require("path");
const cors = require("cors");
const { parse } = require("json2csv"); // Biblioteca para convertir JSON a CSV
const YAML = require("yaml"); // Biblioteca para convertir JSON a YAML

const app = express();
app.use(cors());
app.use(express.json());

// Ruta a los datos (modifica según el archivo que tengas)
const htdocsPath = path.join(__dirname, "../htdocs");
const dataFile = path.join(htdocsPath, "datos.json");

// Función para cargar datos desde un archivo JSON
function loadData() {
  if (!fs.existsSync(dataFile)) {
    throw new Error("Archivo de datos no encontrado.");
  }
  return JSON.parse(fs.readFileSync(dataFile, "utf-8"));
}

// Endpoint para exportar en formato JSON
app.get("/export/json", (req, res) => {
  try {
    const data = loadData();
    res.json(data);
  } catch (error) {
    res.status(500).send(`Error al exportar JSON: ${error.message}`);
  }
});

// Endpoint para exportar en formato XML
app.get("/export/xml", (req, res) => {
  try {
    const data = loadData();
    let xml = '<?xml version="1.0" encoding="UTF-8"?>\n<registroUsuarios>\n';
    data.forEach(item => {
      xml += "  <usuario>\n";
      for (let key in item) {
        xml += `    <${key}>${item[key]}</${key}>\n`;
      }
      xml += "  </usuario>\n";
    });
    xml += "</registroUsuarios>";

    res.set("Content-Type", "application/xml");
    res.send(xml);
  } catch (error) {
    res.status(500).send(`Error al exportar XML: ${error.message}`);
  }
});

// Endpoint para exportar en formato CSV
app.get("/export/csv", (req, res) => {
  try {
    const data = loadData();
    const csv = parse(data); // Convierte JSON a CSV usando json2csv
    res.set("Content-Type", "text/csv");
    res.send(csv);
  } catch (error) {
    res.status(500).send(`Error al exportar CSV: ${error.message}`);
  }
});

// Endpoint para exportar en formato YAML
app.get("/export/yaml", (req, res) => {
  try {
    const data = loadData();
    const yaml = YAML.stringify(data); // Convierte JSON a YAML usando yaml
    res.set("Content-Type", "text/yaml");
    res.send(yaml);
  } catch (error) {
    res.status(500).send(`Error al exportar YAML: ${error.message}`);
  }
});

// Endpoint para exportar en formato HTML
app.get("/export/html", (req, res) => {
  try {
    const data = loadData();
    let html = "<table border='1'>\n<tr>";
    const keys = Object.keys(data[0]); // Columnas
    keys.forEach(key => html += `<th>${key}</th>`);
    html += "</tr>\n";

    data.forEach(item => {
      html += "<tr>";
      keys.forEach(key => html += `<td>${item[key]}</td>`);
      html += "</tr>\n";
    });
    html += "</table>";

    res.set("Content-Type", "text/html");
    res.send(html);
  } catch (error) {
    res.status(500).send(`Error al exportar HTML: ${error.message}`);
  }
});

// Endpoint para exportar en texto plano
app.get("/export/plaintext", (req, res) => {
  try {
    const data = loadData();
    let plainText = "";
    data.forEach(item => {
      for (let key in item) {
        plainText += `${key}: ${item[key]}\n`;
      }
      plainText += "\n";
    });

    res.set("Content-Type", "text/plain");
    res.send(plainText);
  } catch (error) {
    res.status(500).send(`Error al exportar texto plano: ${error.message}`);
  }
});

// Configurar servidor
const PORT = 3000;
app.listen(PORT, () => {
  console.log(`Servidor corriendo en http://localhost:${PORT}`);
});

 

Descripción de los endpoints

  1. JSON (/export/json):
    • Devuelve los datos como un objeto JSON.
    • Es ideal para integraciones entre aplicaciones.
  2. XML (/export/xml):
    • Genera un archivo XML con los datos estructurados.
    • Útil para sistemas que utilizan este formato como estándar.
  3. CSV (/export/csv):
    • Convierte los datos a formato CSV (valores separados por comas).
    • Compatible con programas como Excel o Google Sheets.
  4. YAML (/export/yaml):
    • Convierte los datos a YAML, que es legible para humanos y se usa frecuentemente en configuraciones.
    • Necesita la biblioteca yaml (instalar con npm install yaml).
  5. HTML (/export/html):
    • Formatea los datos en una tabla HTML.
    • Útil para mostrarlos directamente en una página web.
  6. Texto plano (/export/plaintext):
    • Presenta los datos como texto simple, con cada clave-valor en una línea.
    • Ideal para visualización rápida en terminales o logs.

 

Bibliotecas utilizadas

  •  json2csv: Convierte objetos JSON a formato CSV.
  • yaml: Convierte objetos JSON a YAML.

 

Pruebas

  1. Arranca el servidor: Ejecuta el backend con node app.js.
  2. Accede a los endpoints: Ve a http://localhost:3000/export/json, /export/xml, /export/csv, etc., según el formato deseado.
  3. Verifica la salida: Abre las URLs en el navegador o utiliza herramientas como Postman.

Esta solución garantiza que los datos se puedan exportar en múltiples formatos directamente desde el backend.

....

Destacado

Bootloader Avanzado en Ensamblador

Bootloader Avanzado en Ensamblador Características del Bootloader Se carga en la dirección 0x7C00 (BIOS). ...