AYUDA PARA NODOS

LoopBack node js (Cómo funciona para desarrolladores)

Publicado en 29 de septiembre, 2024
Compartir:

Introducción

Una solución completa para la generación dinámica de PDF dentro de aplicaciones del marco LoopBack es proporcionada por la integración fluida de IronPDF, una biblioteca para crear documentos PDF de manera programática, con LoopBack, un marco de Node.js para construir APIs. Con funciones como la creación de modelos, validación de fuentes de datos, métodos remotos y control de acceso, el marco LoopBack facilita el desarrollo de API/web, y IronPDF lo mejora con capacidades más avanzadas de producción de PDF.

Los desarrolladores pueden crear PDFs sobre la marcha con esta integración, extrayendo datos de múltiples fuentes, incluidas APIs externas y bases de datos. Esto hace posible crear registros personalizados u objetos de dominio empresarial para cumplir con los requisitos del proyecto, tales como facturas, certificados, informes y más. Debido a que LoopBack es asíncrono, complementa las características de IronPDF para manejarPDF-generar tareas eficientemente sin interferir con el bucle de eventos, garantizando la capacidad de respuesta y el rendimiento óptimo.

Para comenzar a trabajar con LoopBack e IronPDF, crea un nuevo proyecto utilizando la herramienta CLI de LoopBack e instala IronPDF como una dependencia usando npm. Utilizar las capacidades de middleware y método remoto de LoopBack para crear PDFs instantáneamente en respuesta a solicitudes del cliente hace que la integración sea sencilla. Teniendo en cuenta todo, esta integración ofrece a los desarrolladores la capacidad de manejar diversos requisitos de generación de documentos dentro de las aplicaciones LoopBack de manera eficiente.

¿Qué es LoopBack Node.js?

Un potente framework de Node.js llamadoLoopBackfue creado para facilitar el proceso de crear APIs y enlazarlas a diferentes fuentes de datos. Con LoopBack, un producto de StrongLoop, los desarrolladores pueden diseñar fácilmente aplicaciones escalables y adaptables. Fundamentalmente, LoopBack se construye sobre un marco de trabajo express y se basa en una metodología de desarrollo dirigida por modelos, que permite a los programadores crear modelos de datos que simbolizan el dominio de sus aplicaciones. Las bases de datos relacionales como MySQL y PostgreSQL, las bases de datos NoSQL como MongoDB, así como las APIs REST externas y los servicios SOAP, pueden integrarse fácilmente con estos modelos.

LoopBack es único porque simplifica el proceso de desarrollo de API generando automáticamente endpoints RESTful basados en modelos proporcionados. Además, LoopBack viene con soporte integrado para validación, permisos y autenticación, lo que permite a los programadores proteger sus API y garantizar la integridad de los datos. Debido a que la arquitectura de middleware de LoopBack se basa en Express.js, es extensible y flexible, lo que permite a los desarrolladores trabajar con middleware preexistente o crear middleware a medida para satisfacer necesidades únicas.

Ya sea que estés creando una API REST sencilla o una arquitectura de microservicios sofisticada, LoopBack tiene las capacidades y herramientas necesarias para acelerar el desarrollo y producir soluciones confiables y escalables. Debido a su extensa documentación y a su vibrante comunidad, los desarrolladores lo eligen frecuentemente al crear aplicaciones móviles y en línea de vanguardia.

LoopBack node js(Cómo Funciona para Desarrolladores): Figura 1 - LoopBack

Características de LoopBack

Arquitectura Dirigida por Modelos: Al permitir a los desarrolladores definir modelos de datos mediante un enfoque basado en esquemas, LoopBack apoya el desarrollo dirigido por modelos. Una variedad de fuentes de datos, incluidos bases de datos, APIs REST y servicios SOAP, pueden representarse mediante modelos.

Agnosticismo de la fuente de datos: Bases de datos relacionales(MySQL, PostgreSQL), bases de datos NoSQL(MongoDB), las API REST externas y los servicios SOAP son solo algunas de las muchas fuentes de datos que LoopBack admite.

Generación automatizada de API REST: LoopBack utiliza modelos predefinidos para crear automáticamente endpoints de API RESTful en API Explorer, reduciendo el código repetitivo y agilizando el desarrollo.

Compatibilidad integrada para autenticación y autorización: LoopBack ofrece soporte incorporado para estas características, permitiendo a los desarrolladores incorporar control de acceso basado en roles.(RBAC), autenticación de usuarios y otras medidas de seguridad en sus API.

Middleware y métodos remotos: Para alterar el comportamiento de los endpoints del API, los desarrolladores pueden proporcionar middleware y métodos remotos utilizando LoopBack. Mientras que los métodos remotos ofrecen funcionalidad personalizada que puede ser llamada remotamente a través de HTTP, las funciones de middleware pueden interceptar y modificar solicitudes y respuestas.

Interfaz de línea de comandos(CLI)para LoopBack: LoopBack incluye una herramienta CLI robusta que facilita actividades típicas como la creación de modelos y controladores, la construcción de nuevos proyectos y la realización de migraciones.

Integración con componentes de LoopBack: LoopBack facilita el uso de componentes, que son módulos reutilizables que proporcionan capacidades de entrega de correo electrónico, almacenamiento de archivos y autenticación. Esto ahorra a los desarrolladores tener que empezar desde cero al añadir nuevas funciones a sus aplicaciones.

LoopBack Explorer: Los desarrolladores pueden examinar y probar interactivamente los puntos finales de la API con la herramienta integrada LoopBack's API explorer. Esto facilita la resolución de problemas y la comprensión de las posibilidades de la API.

Crear y configurar LoopBack Node.js JS

Puede utilizar los siguientes procedimientos para configurar y construir una aplicación LoopBack en Node.js:

Instalar LoopBack CLI

Instalación de la Interfaz de Línea de Comandos de LoopBack(CLI), que ofrece recursos para construir y administrar aplicaciones LoopBack, es el primer paso. Utiliza npm para instalarlo globalmente:

npm install -g loopback-cli
npm install -g loopback-cli
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install -g loopback-cli
VB   C#

Crear una nueva aplicación LoopBack

Para crear una nueva aplicación LoopBack core desde cero, use la CLI. Abra el directorio en el que desea construir su aplicación y ejecútela allí:

lb4 app
lb4 app
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'lb4 app
VB   C#

Para proporcionar información sobre su aplicación, como su nombre y directorio y la funcionalidad que desea habilitar, simplemente siga las indicaciones.

Se le solicitará que proporcione la siguiente información:

  1. Nombre del proyecto: Introduce el nombre de tu aplicación, por ejemplo, my-loopback-app.

  2. Descripción del proyecto: Opcionalmente describe tu aplicación.

  3. Directorio raíz del proyecto: Acepte el valor predeterminado o especifique un directorio diferente.

  4. Nombre de la clase Application: Acepte el valor predeterminado Application.

  5. Habilitar Prettier: Elija si desea habilitar Prettier para el formateo de código.

  6. Habilitar TSLINT: Elija si desea habilitar TSLint para el linting de código.

  7. Habilitar Mocha: Elige si deseas habilitar Mocha para ejecutar pruebas.

    La CLI generará la estructura del proyecto e instalará las dependencias necesarias.

Explorar la estructura del proyecto

La estructura de tu directorio de proyecto será la siguiente:

my-loopback-app/
├── src/
│   ├── controllers/
│   ├── models/
│   ├── repositories/
│   ├── index.ts
│   ├── application.ts
│   └── ...
├── package.json
├── tsconfig.json
└── ...
my-loopback-app/
├── src/
│   ├── controllers/
│   ├── models/
│   ├── repositories/
│   ├── index.ts
│   ├── application.ts
│   └── ...
├── package.json
├── tsconfig.json
└── ...
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'my-loopback-app/ ├── src/ │ ├── controllers/ │ ├── models/ │ ├── repositories/ │ ├── index.ts │ ├── application.ts │ └──... ├── package.json ├── tsconfig.json └──...
VB   C#

Definir Modelos

Para especificar la estructura de tus datos, desarrolla modelos manualmente o utiliza el CLI de LoopBack. Los modelos, que pueden ser respaldados por una variedad de estructuras de datos y fuentes, representan cosas en su programa. Por ejemplo, ejecuta: para generar un nuevo modelo llamado Product.

lb4 model
lb4 model
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'lb4 model
VB   C#

Para especificar los atributos y conexiones de su modelo, siga las instrucciones.

Crear un controlador

Para gestionar solicitudes de creación de documentos PDF, crea un nuevo controlador. Para crear un nuevo controlador, utiliza el siguiente comando en LoopBack CLI:

lb4 controller
lb4 controller
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'lb4 controller
VB   C#

Para definir el nombre y el modelo relacionado del controlador, simplemente siga las indicaciones. Supongamos que queremos asociar la propiedad nombre del controlador con el modelo Report y llamarlo ReportController.

Definir fuentes de datos

Determine con qué fuentes de datos se comunicarán tus modelos. Muchos sistemas de bases de datos, como MySQL, PostgreSQL, MongoDB y otros, son compatibles con LoopBack. Para configurar tus fuentes de datos, actualiza el archivo datasources.json o usa la CLI de LoopBack.

Explorar LoopBack

Utilice la herramienta de explorador de API integrada, disponible en http://localhost:3000/explorer, para investigar las características de LoopBack. Puede explorar y probar sus puntos finales de API aquí.

Código de ejemplo del controlador de ping

import {inject} from '@loopback/core';
import {
  Request,
  RestBindings,
  get,
  response,
  ResponseObject,
} from '@loopback/rest';
/**      * OpenAPI response for ping()
 */
const PING_RESPONSE: ResponseObject = {
  description: 'Ping Response',
  content: {
    'application/json': {
      schema: {
        type: 'object',
        title: 'PingResponse',
        properties: {
          greeting: {type: 'string'},
          date: {type: 'string'},
          url: {type: 'string'},
          headers: {
            type: 'object',
            properties: {
              'Content-Type': {type: 'string'},
            },
            additionalProperties: true,
          },
        },
      },
    },
  },
};
/**      * A simple controller to bounce back http requests
 */
export class PingController {
  constructor(@inject(RestBindings.Http.REQUEST) private req: Request) {}
  // Map to `GET /ping`
  @get('/ping')
  @response(200, PING_RESPONSE)
  ping(): object {
    // Reply with a greeting, the current time, the url, and request headers
    return {
      greeting: 'Hello from LoopBack',
      date: new Date(),
      url: this.req.url,
      headers: Object.assign({}, this.req.headers),
    };
  }
}
import {inject} from '@loopback/core';
import {
  Request,
  RestBindings,
  get,
  response,
  ResponseObject,
} from '@loopback/rest';
/**      * OpenAPI response for ping()
 */
const PING_RESPONSE: ResponseObject = {
  description: 'Ping Response',
  content: {
    'application/json': {
      schema: {
        type: 'object',
        title: 'PingResponse',
        properties: {
          greeting: {type: 'string'},
          date: {type: 'string'},
          url: {type: 'string'},
          headers: {
            type: 'object',
            properties: {
              'Content-Type': {type: 'string'},
            },
            additionalProperties: true,
          },
        },
      },
    },
  },
};
/**      * A simple controller to bounce back http requests
 */
export class PingController {
  constructor(@inject(RestBindings.Http.REQUEST) private req: Request) {}
  // Map to `GET /ping`
  @get('/ping')
  @response(200, PING_RESPONSE)
  ping(): object {
    // Reply with a greeting, the current time, the url, and request headers
    return {
      greeting: 'Hello from LoopBack',
      date: new Date(),
      url: this.req.url,
      headers: Object.assign({}, this.req.headers),
    };
  }
}
import
If True Then
	inject
End If
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'from '@loopback/core'; import { Request, RestBindings, @get, response, ResponseObject} from '@loopback/rest'; const PING_RESPONSE: ResponseObject = { description: 'Ping Response', content: { 'application/json': { schema: { type: 'object', title: 'PingResponse', properties: { greeting: {type: 'string'}, @date: {type: 'string'}, url: {type: 'string'}, headers: { type: 'object', properties: { 'Content-Type': {type: 'string'}}, additionalProperties: True}}}}}}; export class PingController { constructor(@inject(RestBindings.Http.REQUEST) private req: Request) {} @get('/ping') @response(200, PING_RESPONSE) ping(): object { Return { greeting: 'Hello from LoopBack', @date: New @Date(), url:Me.req.url, headers: Object.assign({}, Me.req.headers)}; } }
VB   C#

Salida del código anterior.

LoopBack node js(Cómo funciona para desarrolladores): Figura 2 - Salida de LoopBack

Para empezar

Comenzaremos creando una aplicación de ejemplo que utiliza LoopBack Node.js e IronPDF para crear un documento PDF con información generada dinámicamente. Este es un manual paso a paso con explicaciones detalladas.

¿Qué es IronPDF?

Una biblioteca de aplicaciones llamadaIronPDFfue desarrollado para facilitar la creación, edición y mantenimiento de PDFs. Con esta aplicación, los desarrolladores pueden extraer texto e imágenes de documentos HTML, aplicar encabezados y marcas de agua, combinar numerosos documentos PDF y realizar una variedad de otras actividades. Los desarrolladores pueden crear documentos PDF de alta calidad automáticamente con facilidad gracias a la API fácil de usar y la documentación completa de IronPDF. IronPDF ofrece todas las funciones y capacidades necesarias para mejorar los flujos de trabajo de documentos y ofrecer experiencias de usuario de primera clase en una variedad de escenarios, ya sea que se utilicen para preparar facturas, informes o documentación.

LoopBack node js(Cómo funciona para los desarrolladores): Figura 3 - IronPDF

Características de IronPDF

La conversión de HTML a PDF es un proceso simple y rápido que se puede utilizar para cualquier contenido HTML, incluyendo CSS y JavaScript.

Combinación de archivos PDF: Para facilitar las tareas de gestión de documentos, combine múltiples documentos PDF en un solo archivo PDF.

Extracción de Texto e Imágenes: Extrae texto e imágenes de archivos PDF para ponerlos a disposición para análisis de datos adicionales o procesamiento.

Marcado de agua: Por razones de seguridad o de marca, puedes añadir marcas de agua de texto o imágenes a las páginas PDF.

Incluir Encabezado y Pie de Página: Los encabezados y pies de página de los documentos PDF te permiten incluir un mensaje personalizado o números de página.

Instalar IronPDF

Para habilitar la capacidad de IronPDF, instala los paquetes necesarios de Node.js utilizando el gestor de paquetes de Node.

npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install @ironsoftware/ironpdf
VB   C#

Integra Loopback con IronPDF Node.js

Implemente la siguiente lógica en el archivo de controlador creado.(archivo report.controller.ts o report.controller.js)para crear documentos PDF usando IronPDF:

import {inject} from '@loopback/core';
import {
  Request,
  RestBindings,
  get,
  response,
  ResponseObject,
  oas,
  param,
  Response,
  requestBody,
} from '@loopback/rest';
const IronPdf = require("@ironsoftware/ironpdf");
const document=IronPdf.PdfDocument;
var config=IronPdf.IronPdfGlobalConfig
config.setConfig({licenseKey:''});
/
 * A simple controller to bounce back http requests
 */
export class ReportController {
      @get('/generate-pdf', {
        responses: {
          '200': {
            description: 'PDF file',
            content: {'application/pdf': {schema: {type: 'string', format: 'binary'}}},
          },
        },
      })
      async generatePdf(): Promise<Buffer> {
        // Example HTML content
        const htmlContent = '<html><body><h1>Hello, IronPDF!</h1></body></html>';
        const pdf = (await document.fromHtml(htmlContent));
        const pdfBuffer=await pdf.saveAsBuffer();
        return pdfBuffer;
      }
constructor(@inject(RestBindings.Http.REQUEST) private req: Request) {}
}
import {inject} from '@loopback/core';
import {
  Request,
  RestBindings,
  get,
  response,
  ResponseObject,
  oas,
  param,
  Response,
  requestBody,
} from '@loopback/rest';
const IronPdf = require("@ironsoftware/ironpdf");
const document=IronPdf.PdfDocument;
var config=IronPdf.IronPdfGlobalConfig
config.setConfig({licenseKey:''});
/
 * A simple controller to bounce back http requests
 */
export class ReportController {
      @get('/generate-pdf', {
        responses: {
          '200': {
            description: 'PDF file',
            content: {'application/pdf': {schema: {type: 'string', format: 'binary'}}},
          },
        },
      })
      async generatePdf(): Promise<Buffer> {
        // Example HTML content
        const htmlContent = '<html><body><h1>Hello, IronPDF!</h1></body></html>';
        const pdf = (await document.fromHtml(htmlContent));
        const pdfBuffer=await pdf.saveAsBuffer();
        return pdfBuffer;
      }
constructor(@inject(RestBindings.Http.REQUEST) private req: Request) {}
}
import
If True Then
	inject
End If
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'from '@loopback/core'; import { Request, RestBindings, @get, response, ResponseObject, oas, param, Response, requestBody} from '@loopback/rest'; const IronPdf = require("@ironsoftware/ironpdf"); const document=IronPdf.PdfDocument; var config=IronPdf.IronPdfGlobalConfig config.setConfig({licenseKey:''}); / * A simple controller @to bounce back http requests */ export class ReportController { @get('/generate-pdf', { responses: { '200': { description: 'PDF file', content: {'application/pdf': {schema: {type: 'string', format: 'binary'}}}}}}) async generatePdf(): Promise<Buffer> { const htmlContent = '<html><body><h1> Hello, IronPDF!</h1></body></html>'; const pdf = (await document.fromHtml(htmlContent)); const pdfBuffer=await pdf.saveAsBuffer(); Return pdfBuffer; } constructor(@inject(RestBindings.Http.REQUEST) private req: Request) {} }
VB   C#

La creación de instancias de Report y la generación de PDF son gestionadas por el ReportController. El contenido HTML se convierte en un búfer PDF utilizando IronPDF y se devuelve a través del método generatePdf.

Para renderizar HTML como un PDF, la función generatePdf utiliza IronPDF. El controlador LoopBack maneja esta integración con facilidad. El contenido HTML del cliente se recibe definiendo un endpoint GET, /generate-pdf. Transformamos la información HTML proporcionada en un PDF dentro del endpoint utilizando la biblioteca IronPDF.

Específicamente, utilizamos pdf.saveAsBuffer()para producir un búfer binario del Archivo PDFe IronPdf.fromHtml(htmlContenido)para construir un objeto PDF a partir de un archivo JSON. Después de eso, el cliente recibe este búfer de vuelta con el tipo MIME adecuado.(aplicación/pdf). Cualquier problema que surja al crear PDFs es detectado y registrado por el servidor, que está escuchando en el puerto 3000. El cliente recibe un código de estado 500 en respuesta. Esta configuración permite crear PDF dinámicos a partir de contenido HTML, lo cual es útil al crear facturas, informes u otros documentos para una aplicación web.

LoopBack node js(Cómo funciona para desarrolladores): Figura 4 - Salida PDF

Conclusión

Finalmente, la integración de IronPDF con LoopBack 4 ofrece una combinación potente para el desarrollo de aplicaciones en línea. Con LoopBack 4, los desarrolladores pueden crear fácilmente APIs RESTful con un marco sólido que les permite concentrarse en la lógica del negocio en lugar del código repetitivo. Sin embargo, IronPDF tiene funciones de generación de PDF fluidas que permiten crear documentos PDF dinámicos a partir de texto HTML.

Además, el proceso de desarrollo se optimiza gracias a la flexibilidad y facilidad de uso tanto de LoopBack 4 como de IronPDF, lo que permite a los desarrolladores producir aplicaciones de alta calidad rápidamente. Debido a que LoopBack 4 gestiona los controles de acceso al backend de la API e IronPDF se encarga de la creación de PDF, los desarrolladores pueden concentrarse en satisfacer las necesidades del negocio y proporcionar experiencias de usuario excelentes.

Podemos garantizar soluciones de software de alta gama y ricas en funcionalidades para clientes y usuarios finales al integrar IronPDF y productos de Iron Software en su pila de desarrollo. Además, esta sólida base facilitará la optimización de los sistemas de procesos de backend y las iniciativas. A partir de $749 cada uno son IronSoftware. Estas tecnologías son una buena opción para proyectos de desarrollo de software contemporáneos debido a su documentación exhaustiva, su vibrante comunidad de desarrolladores en línea y sus frecuentes actualizaciones.

< ANTERIOR
hapi node js (Cómo funciona para desarrolladores)
SIGUIENTE >
xml2js npm (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.11 acaba de salir

Instalación gratuita de npm Ver licencias >