{"id":216,"date":"2023-04-16T11:55:04","date_gmt":"2023-04-16T14:55:04","guid":{"rendered":"https:\/\/danielsegovia.com\/plataforma\/?p=216"},"modified":"2023-08-04T20:21:47","modified_gmt":"2023-08-04T23:21:47","slug":"20-arquitectura-de-aplicaciones","status":"publish","type":"post","link":"https:\/\/danielsegovia.com\/plataforma\/20-arquitectura-de-aplicaciones\/","title":{"rendered":"20 &#8211; Arquitectura de aplicaciones"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/04\/Default_one_building_pilar_with_legos_1.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/Default_one_building_pilar_with_legos_1-edited-1.jpg\" alt=\"\" class=\"wp-image-631\" srcset=\"https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/Default_one_building_pilar_with_legos_1-edited-1.jpg 1024w, https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/Default_one_building_pilar_with_legos_1-edited-1-300x169.jpg 300w, https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/Default_one_building_pilar_with_legos_1-edited-1-768x432.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Node.js es un entorno de tiempo de ejecuci\u00f3n de JavaScript que permite ejecutar c\u00f3digo JavaScript fuera del navegador, en el servidor. Fue creado por Ryan Dahl en 2009 y se ha vuelto muy popular debido a su enfoque en la programaci\u00f3n del lado del servidor y la capacidad de manejar operaciones de entrada y salida no bloqueantes de manera eficiente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una de las partes fundamentales de Node.js es el motor V8. V8 es un motor de JavaScript de c\u00f3digo abierto desarrollado por Google. Est\u00e1 escrito en C++ y se utiliza tanto en el navegador Chrome como en Node.js. La principal funci\u00f3n de V8 es interpretar y ejecutar el c\u00f3digo JavaScript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">V8 compila el c\u00f3digo JavaScript en c\u00f3digo de m\u00e1quina altamente optimizado en tiempo de ejecuci\u00f3n, lo que le permite lograr un rendimiento r\u00e1pido y eficiente. Utiliza t\u00e9cnicas avanzadas de compilaci\u00f3n, como la compilaci\u00f3n JIT (Just-In-Time), que mejora a\u00fan m\u00e1s el rendimiento del c\u00f3digo JavaScript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora veamos como organizar una aplicaci\u00f3n de backend en Node.JS<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Separaci\u00f3n de responsabilidades<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La separaci\u00f3n de responsabilidades es un principio fundamental en el desarrollo de software y se aplica tanto en aplicaciones web como en aplicaciones Node.js. La idea principal detr\u00e1s de este principio es dividir una aplicaci\u00f3n en componentes o capas que tengan responsabilidades claras y bien definidas. Esto facilita la comprensi\u00f3n, el mantenimiento y la escalabilidad del c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En el contexto de una aplicaci\u00f3n Node.js, la separaci\u00f3n de responsabilidades implica dividir la l\u00f3gica de la aplicaci\u00f3n en capas o componentes distintos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Capa de enrutamiento<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Esta capa se encarga de manejar las rutas de la aplicaci\u00f3n y de dirigir las solicitudes entrantes a las funciones o controladores correspondientes. Puede utilizar un enrutador como Express.js para definir y gestionar las rutas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Capa de controladores<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Los controladores son responsables de manejar las solicitudes y generar las respuestas correspondientes. Reciben los datos enviados desde la capa de enrutamiento, realizan cualquier procesamiento necesario y devuelven la respuesta adecuada. Los controladores pueden acceder a otros componentes, como servicios o modelos, para realizar operaciones m\u00e1s complejas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Capa de servicios<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La capa de servicios contiene la l\u00f3gica de negocio de la aplicaci\u00f3n. Aqu\u00ed es donde se implementan las operaciones y funcionalidades espec\u00edficas de la aplicaci\u00f3n. Los servicios encapsulan la l\u00f3gica y proporcionan una interfaz para que los controladores y otros componentes accedan a ellos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Capa de modelos<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Los modelos representan la estructura y la l\u00f3gica relacionada con la base de datos en la aplicaci\u00f3n. Los modelos se utilizan para interactuar con la base de datos, realizar consultas y manipular los datos almacenados. Pueden utilizar un ORM (Object-Relational Mapping) como Mongoose para facilitar la interacci\u00f3n con la base de datos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Capa de middleware<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Los middleware son componentes que se ejecutan entre las solicitudes entrantes y los controladores. Pueden realizar tareas como la autenticaci\u00f3n, la validaci\u00f3n de datos, el registro de solicitudes, la compresi\u00f3n de respuestas, entre otras. Los middleware ayudan a modularizar y reutilizar la l\u00f3gica com\u00fan que se aplica a varias rutas o controladores.<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Gesti\u00f3n de errores<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La gesti\u00f3n de errores es un aspecto fundamental en el desarrollo de aplicaciones, ya que ning\u00fan sistema est\u00e1 libre de errores o excepciones. La gesti\u00f3n de errores en Node.js implica detectar, capturar y manejar los errores de manera adecuada para mantener el buen funcionamiento de la aplicaci\u00f3n y brindar una experiencia de usuario fluida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un error en una aplicaci\u00f3n Node.js puede ocurrir por varias razones, como datos de entrada incorrectos, problemas de conectividad, errores de programaci\u00f3n o fallas en servicios externos. Independientemente de la causa, es importante manejar los errores de manera apropiada para minimizar su impacto y proporcionar una respuesta adecuada al usuario.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed hay algunos conceptos clave sobre la gesti\u00f3n de errores en Node.js:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Detecci\u00f3n de errores<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La detecci\u00f3n de errores implica identificar cu\u00e1ndo ocurre un error en la aplicaci\u00f3n. Esto se logra a trav\u00e9s de t\u00e9cnicas como el monitoreo de registros, el seguimiento de m\u00e9tricas y el uso de herramientas de detecci\u00f3n de errores. La detecci\u00f3n temprana de errores es fundamental para poder tomar medidas r\u00e1pidas y resolver los problemas de manera oportuna.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Captura de errores<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez que se detecta un error, se debe capturar para evitar que la aplicaci\u00f3n se detenga o se bloquee. En Node.js, esto se puede lograr utilizando bloques try-catch, donde el c\u00f3digo propenso a errores se coloca dentro del bloque try y cualquier error que ocurra se captura en el bloque catch. Al capturar los errores, se evita que se propaguen sin control y se tiene la oportunidad de tomar medidas adecuadas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Manejo de errores<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El manejo de errores implica decidir qu\u00e9 acciones tomar cuando se produce un error. Esto puede incluir mostrar un mensaje de error al usuario, registrar el error para su posterior an\u00e1lisis, tomar medidas correctivas, como reiniciar servicios o intentar recuperarse del error, o notificar al equipo de desarrollo. El manejo de errores debe ser espec\u00edfico para cada tipo de error y adaptado a las necesidades y requerimientos de la aplicaci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comunicaci\u00f3n de errores<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando ocurre un error, es importante proporcionar una respuesta adecuada al usuario para informar sobre el problema. Esto implica mostrar mensajes de error claros y comprensibles, evitando revelar informaci\u00f3n sensible o t\u00e9cnicamente compleja. Una comunicaci\u00f3n efectiva de errores ayuda a los usuarios a comprender lo que ha ocurrido y qu\u00e9 pueden hacer a continuaci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prevenci\u00f3n de errores<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s de la gesti\u00f3n de errores, es fundamental trabajar en la prevenci\u00f3n de errores. Esto implica realizar validaciones adecuadas de los datos de entrada, implementar pruebas exhaustivas, seguir buenas pr\u00e1cticas de desarrollo y utilizar t\u00e9cnicas como la validaci\u00f3n de datos y la desinfecci\u00f3n de inputs. La prevenci\u00f3n de errores ayuda a reducir la probabilidad de que ocurran errores en primer lugar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La gesti\u00f3n de errores no solo se trata de corregir los errores que ya han ocurrido, sino tambi\u00e9n de tomar medidas proactivas para prevenirlos y minimizar su impacto en la aplicaci\u00f3n. Una buena gesti\u00f3n de errores ayuda a mantener la estabilidad, la confiabilidad y la usabilidad de la aplicaci\u00f3n, mejorando as\u00ed la experiencia del usuario y la calidad del software en general.<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">La calidad de tu aplicaci\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Las pruebas son una parte esencial del desarrollo de software, ya que garantizan la calidad, el correcto funcionamiento y la confiabilidad de una aplicaci\u00f3n. En el contexto de una aplicaci\u00f3n Node.js, las pruebas permiten verificar que el c\u00f3digo y los componentes funcionen como se esperaba, asegurando que el software cumpla con los requisitos y proporcione una experiencia \u00f3ptima al usuario.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Realizar pruebas en una aplicaci\u00f3n Node.js implica verificar y validar su funcionamiento a trav\u00e9s de diferentes enfoques y niveles de prueba. Existen varios tipos de pruebas que se pueden aplicar en el desarrollo de una aplicaci\u00f3n Node.js, cada uno con su prop\u00f3sito y alcance espec\u00edficos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, presentar\u00e9 una lista de herramientas comunes que se utilizan para realizar pruebas en el backend de una aplicaci\u00f3n Node.js:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pruebas unitarias<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Mocha, Jest, Jasmine y AVA son ejemplos de frameworks populares para realizar pruebas unitarias en Node.js. Estas herramientas permiten definir y ejecutar pruebas en componentes aislados de la aplicaci\u00f3n, como funciones y m\u00f3dulos, para verificar su comportamiento y rendimiento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bibliotecas de aserciones: Chai y Should.js son bibliotecas populares utilizadas para realizar aserciones en pruebas unitarias. Estas bibliotecas proporcionan una sintaxis expresiva y legible para realizar afirmaciones y verificar resultados esperados.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pruebas de integraci\u00f3n<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">SuperTest, Frisby y supertest-api son frameworks utilizados para realizar pruebas de integraci\u00f3n en Node.js. Estas herramientas permiten enviar solicitudes HTTP a la aplicaci\u00f3n y validar las respuestas, verificando as\u00ed la interacci\u00f3n correcta entre los diferentes componentes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pruebas de carga y rendimiento<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Artillery, K6 y Loadtest son herramientas que se utilizan para realizar pruebas de carga y rendimiento en una aplicaci\u00f3n Node.js. Estas herramientas permiten simular cargas de trabajo y evaluar el rendimiento y la escalabilidad de la aplicaci\u00f3n bajo diferentes condiciones.<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Tu aplicaci\u00f3n para todo el mundo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Al desplegar una aplicaci\u00f3n Node.js, es com\u00fan utilizar diferentes entornos para gestionar el ciclo de vida del software y asegurar su calidad antes de su lanzamiento final. Estos entornos t\u00edpicamente incluyen el desarrollo local (dev), entornos de pruebas (staging) y el entorno de producci\u00f3n (production). Cada entorno sirve a un prop\u00f3sito espec\u00edfico y ayuda a garantizar un despliegue suave y sin problemas de la aplicaci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Entorno de desarrollo (dev)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Este entorno se refiere a tu m\u00e1quina local donde desarrollas y pruebas tu aplicaci\u00f3n Node.js. Aqu\u00ed, puedes realizar cambios, agregar nuevas caracter\u00edsticas y probar la funcionalidad antes de enviar los cambios a otros entornos. Tambi\u00e9n puedes utilizar una base de datos local o servicios de terceros en modo de desarrollo para simular el comportamiento del entorno de producci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Entorno de pruebas (staging)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El entorno de pruebas es una r\u00e9plica del entorno de producci\u00f3n y se utiliza para realizar pruebas exhaustivas antes de que la aplicaci\u00f3n se despliegue en producci\u00f3n. Aqu\u00ed, puedes probar nuevos cambios y caracter\u00edsticas en un ambiente controlado, probar la integraci\u00f3n con servicios externos y realizar pruebas de rendimiento y seguridad adicionales.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Entorno de producci\u00f3n (production)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El entorno de producci\u00f3n es donde tu aplicaci\u00f3n Node.js estar\u00e1 disponible para los usuarios finales. Aqu\u00ed, se espera que la aplicaci\u00f3n sea estable, segura y est\u00e9 lista para su uso en un entorno en vivo. Cualquier cambio o actualizaci\u00f3n en la aplicaci\u00f3n debe pasar por pruebas rigurosas en los entornos anteriores antes de ser desplegado en producci\u00f3n.<\/p>\n\n\n\n<div style=\"height:36px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Existen diversas opciones de alojamiento para desplegar una aplicaci\u00f3n Node.js, y es importante elegir el entorno de alojamiento adecuado seg\u00fan tus necesidades y requisitos. Algunas opciones comunes incluyen:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Servicios en la nube<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Los proveedores de servicios en la nube como Amazon Web Services (AWS), Microsoft Azure y Google Cloud Platform (GCP) ofrecen soluciones espec\u00edficas para Node.js. Estos servicios proporcionan una infraestructura escalable y flexible para alojar y ejecutar tu aplicaci\u00f3n Node.js en entornos de producci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Plataformas de despliegue<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Existen diversos servicios y plataformas que ofrecen soluciones de despliegue para aplicaciones Node.js, como Heroku, DigitalOcean y Railway. Estos servicios brindan infraestructura escalable y herramientas integradas que facilitan el despliegue y la administraci\u00f3n de aplicaciones Node.js en entornos de producci\u00f3n.<\/p>\n\n\n\n<div style=\"height:31px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Al seleccionar el entorno de alojamiento adecuado, es importante considerar aspectos como el costo, la escalabilidad, la facilidad de uso, las caracter\u00edsticas ofrecidas y el soporte t\u00e9cnico disponible. Cada opci\u00f3n de alojamiento tiene sus ventajas y desventajas, por lo que debes evaluar cuidadosamente cu\u00e1l se ajusta mejor a tus necesidades y requisitos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s del entorno de alojamiento, otros aspectos importantes del despliegue de una aplicaci\u00f3n Node.js incluyen la configuraci\u00f3n del servidor, la gesti\u00f3n de dependencias, el manejo de variables de entorno y la automatizaci\u00f3n del proceso de despliegue. Estos aspectos garantizan que tu aplicaci\u00f3n se ejecute correctamente en el entorno de producci\u00f3n y est\u00e9 lista para su uso por parte de los usuarios finales.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recuerda que el proceso de despliegue puede variar dependiendo de tus necesidades y preferencias. Es importante seguir las mejores pr\u00e1cticas de seguridad, monitoreo y escalabilidad, y contar con una estrategia s\u00f3lida de copias de seguridad para asegurar el rendimiento y la disponibilidad continua de tu aplicaci\u00f3n Node.js en el entorno de producci\u00f3n.<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Buenas pr\u00e1cticas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La adopci\u00f3n de buenas pr\u00e1cticas en el desarrollo de aplicaciones Node.js es esencial para garantizar la calidad, la eficiencia y la mantenibilidad del c\u00f3digo. Las buenas pr\u00e1cticas se basan en principios como el c\u00f3digo limpio, la legibilidad, la modularidad y la consistencia en el estilo de codificaci\u00f3n. Seguir estas pr\u00e1cticas no solo mejora la experiencia del desarrollo, sino que tambi\u00e9n facilita la colaboraci\u00f3n en equipos, reduce errores y favorece la escalabilidad de las aplicaciones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una de las bases de las buenas pr\u00e1cticas en el desarrollo de software es el c\u00f3digo limpio. El c\u00f3digo limpio es aquel que es f\u00e1cil de leer, entender y mantener. Utiliza nombres descriptivos para variables, funciones y clases, evita la repetici\u00f3n de c\u00f3digo y sigue principios como el principio de responsabilidad \u00fanica y el principio de separaci\u00f3n de preocupaciones. El c\u00f3digo limpio es crucial para que el desarrollo sea m\u00e1s eficiente y para facilitar la colaboraci\u00f3n en proyectos de equipo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s del c\u00f3digo limpio, el uso de herramientas como los linters tambi\u00e9n es fundamental. Los linters son utilidades que analizan el c\u00f3digo en busca de errores, inconsistencias y violaciones de las reglas de codificaci\u00f3n establecidas. Al utilizar un linter en tu proyecto Node.js, puedes garantizar que el c\u00f3digo cumpla con est\u00e1ndares predefinidos y seguir las mejores pr\u00e1cticas de la comunidad. Esto ayuda a identificar y corregir problemas en el c\u00f3digo de manera temprana, mejorando as\u00ed la calidad y la legibilidad del mismo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Otra pr\u00e1ctica importante es el uso de pruebas automatizadas. Las pruebas automatizadas, como las pruebas unitarias y las pruebas de integraci\u00f3n, ayudan a garantizar que tu c\u00f3digo funcione correctamente y se comporte seg\u00fan lo esperado. Estas pruebas pueden detectar errores y problemas de manera temprana, lo que facilita su correcci\u00f3n y evita la propagaci\u00f3n de errores en etapas posteriores del desarrollo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En resumen, seguir buenas pr\u00e1cticas en el desarrollo de aplicaciones Node.js, como mantener un c\u00f3digo limpio, utilizar linters y realizar pruebas automatizadas, es esencial para producir un software de calidad, escalable y f\u00e1cil de mantener. Estas pr\u00e1cticas promueven la eficiencia del desarrollo, facilitan la colaboraci\u00f3n en equipo y mejoran la experiencia del usuario final.<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Prep\u00e1rate para el pr\u00f3ximo encuentro<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En la pr\u00f3xima clase empezaremos a ver como distribuir nuestra aplicaci\u00f3n para comenzar prolijos desde el inicio.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Node.js es un entorno de tiempo de ejecuci\u00f3n de JavaScript que permite ejecutar c\u00f3digo JavaScript fuera del navegador, en el servidor. Fue creado por Ryan Dahl en 2009 y se ha vuelto muy popular debido a su enfoque en la programaci\u00f3n del lado del servidor y la capacidad de manejar operaciones de entrada y salida &#8230; <a title=\"20 &#8211; Arquitectura de aplicaciones\" class=\"read-more\" href=\"https:\/\/danielsegovia.com\/plataforma\/20-arquitectura-de-aplicaciones\/\" aria-label=\"Leer m\u00e1s sobre 20 &#8211; Arquitectura de aplicaciones\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,3],"tags":[],"class_list":["post-216","post","type-post","status-publish","format-standard","hentry","category-backend-con-node-js","category-curso-de-node-js"],"_links":{"self":[{"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/posts\/216","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/comments?post=216"}],"version-history":[{"count":9,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/posts\/216\/revisions"}],"predecessor-version":[{"id":637,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/posts\/216\/revisions\/637"}],"wp:attachment":[{"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/media?parent=216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/categories?post=216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/tags?post=216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}