{"id":638,"date":"2023-11-15T08:56:48","date_gmt":"2023-11-15T11:56:48","guid":{"rendered":"https:\/\/stackcodelab.com\/blog\/?p=638"},"modified":"2023-12-03T12:07:15","modified_gmt":"2023-12-03T15:07:15","slug":"patrones-de-diseno-y-arquitectura-en-desarrollo-frontend","status":"publish","type":"post","link":"https:\/\/stackcodelab.com\/blog\/patrones-de-diseno-y-arquitectura-en-desarrollo-frontend\/","title":{"rendered":"Patrones de Dise\u00f1o y Arquitectura en Desarrollo Frontend"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Los patrones de dise\u00f1o y la arquitectura son fundamentales para el desarrollo frontend de aplicaciones web de calidad. En este cap\u00edtulo, exploraremos patrones comunes de dise\u00f1o y consideraciones arquitect\u00f3nicas en el desarrollo frontend. Proporcionaremos ejemplos y ejercicios para que los lectores puedan practicar y profundizar en su comprensi\u00f3n de estos conceptos cr\u00edticos.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Importancia de los Patrones de Dise\u00f1o y la Arquitectura<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los patrones de dise\u00f1o y la arquitectura son esenciales para:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Mantener el c\u00f3digo organizado:<\/strong>&nbsp;Los patrones ayudan a estructurar el c\u00f3digo de una manera clara y mantenible.<\/li>\n\n\n\n<li><strong>Facilitar la colaboraci\u00f3n:<\/strong>&nbsp;Un c\u00f3digo bien organizado es m\u00e1s f\u00e1cil de entender y colaborar en equipo.<\/li>\n\n\n\n<li><strong>Mejorar la escalabilidad:<\/strong>&nbsp;La arquitectura adecuada permite que una aplicaci\u00f3n crezca de manera eficiente.<\/li>\n\n\n\n<li><strong>Reducir errores:<\/strong>&nbsp;Los patrones ayudan a evitar errores comunes y promueven buenas pr\u00e1cticas.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Patrones de Dise\u00f1o Comunes en Frontend<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Patr\u00f3n Modelo-Vista-Controlador (MVC):<\/strong>&nbsp;Divide una aplicaci\u00f3n en tres componentes principales: el Modelo (manejo de datos), la Vista (presentaci\u00f3n) y el Controlador (l\u00f3gica de control).<\/li>\n\n\n\n<li><strong>Patr\u00f3n Observador:<\/strong>&nbsp;Permite que un objeto (sujeto) notifique a otros objetos (observadores) sobre cambios en su estado.<\/li>\n\n\n\n<li><strong>Patr\u00f3n Singleton:<\/strong>&nbsp;Garantiza que una clase tenga una \u00fanica instancia y proporciona un punto de acceso global a esa instancia.<\/li>\n\n\n\n<li><strong>Patr\u00f3n F\u00e1brica:<\/strong>&nbsp;Define una interfaz para crear objetos, pero permite a las subclases alterar el tipo de objetos que se crear\u00e1n.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejemplo de Patr\u00f3n MVC:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Modelo\r\nclass ProductoModel {\r\n    constructor(nombre, precio) {\r\n        this.nombre = nombre;\r\n        this.precio = precio;\r\n    }\r\n}\r\n\r\n\/\/ Vista\r\nclass ProductoView {\r\n    render(producto) {\r\n        console.log(`Producto: ${producto.nombre}, Precio: $${producto.precio}`);\r\n    }\r\n}\r\n\r\n\/\/ Controlador\r\nclass ProductoController {\r\n    constructor(model, view) {\r\n        this.model = model;\r\n        this.view = view;\r\n    }\r\n\r\n    actualizarVista() {\r\n        this.view.render(this.model);\r\n    }\r\n}\r\n\r\nconst miProducto = new ProductoModel(\"Camiseta\", 20);\r\nconst miVista = new ProductoView();\r\nconst miControlador = new ProductoController(miProducto, miVista);\r\n\r\nmiControlador.actualizarVista();\r\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejercicio de Patr\u00f3n Observador:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ejercicio: Implementa el patr\u00f3n observador en una aplicaci\u00f3n sencilla. Crea un objeto \u00absujeto\u00bb que pueda notificar a m\u00faltiples \u00abobservadores\u00bb cuando cambie su estado. Por ejemplo, un sistema de notificaciones donde varios componentes deben reaccionar a nuevos mensajes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este ejercicio permitir\u00e1 a los lectores comprender c\u00f3mo se aplica el patr\u00f3n observador en el desarrollo frontend y c\u00f3mo facilita la comunicaci\u00f3n entre componentes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Consideraciones Arquitect\u00f3nicas en Frontend<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Arquitectura de Componentes:<\/strong>&nbsp;Divide la aplicaci\u00f3n en componentes reutilizables, como encabezados, pies de p\u00e1gina, barras laterales, etc.<\/li>\n\n\n\n<li><strong>Gesti\u00f3n de Estado:<\/strong>&nbsp;Utiliza herramientas como Redux o Vuex para administrar el estado de la aplicaci\u00f3n de manera eficiente.<\/li>\n\n\n\n<li><strong>Enrutamiento:<\/strong>&nbsp;Implementa un enrutador para manejar la navegaci\u00f3n y las vistas en una SPA (Single Page Application).<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejercicio de Enrutamiento en una SPA:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ejercicio: Crea una SPA sencilla con dos o m\u00e1s vistas y un sistema de enrutamiento. Implementa una barra de navegaci\u00f3n que permite cambiar entre las vistas y mantener la URL sincronizada con la vista actual.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este ejercicio ayudar\u00e1 a los lectores a comprender c\u00f3mo implementar la arquitectura de enrutamiento en una SPA y c\u00f3mo se relaciona con la navegaci\u00f3n y la presentaci\u00f3n de vistas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Desarrollo Basado en Componentes<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>El desarrollo basado en componentes es una estrategia fundamental en el desarrollo frontend moderno. En este cap\u00edtulo, exploraremos en detalle c\u00f3mo funciona el desarrollo basado en componentes y c\u00f3mo aplicarlo en proyectos frontend. Proporcionaremos ejemplos y ejercicios para que los lectores puedan practicar y profundizar en su comprensi\u00f3n de este enfoque esencial.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00bfQu\u00e9 es el Desarrollo Basado en Componentes?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El desarrollo basado en componentes es un enfoque en el que una aplicaci\u00f3n se descompone en peque\u00f1as unidades funcionales llamadas componentes. Estos componentes son independientes, reutilizables y se componen para crear interfaces de usuario m\u00e1s complejas. Cada componente se enfoca en una tarea espec\u00edfica, lo que facilita la gesti\u00f3n y el mantenimiento del c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ventajas del Desarrollo Basado en Componentes:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Reutilizaci\u00f3n:<\/strong>&nbsp;Los componentes se pueden reutilizar en toda la aplicaci\u00f3n, lo que ahorra tiempo y reduce la duplicaci\u00f3n de c\u00f3digo.<\/li>\n\n\n\n<li><strong>Mantenibilidad:<\/strong>&nbsp;Cada componente es f\u00e1cil de entender y mantener, ya que se enfoca en una funcionalidad espec\u00edfica.<\/li>\n\n\n\n<li><strong>Colaboraci\u00f3n:<\/strong>&nbsp;Varios desarrolladores pueden trabajar en componentes independientes sin interferir con el trabajo de los dem\u00e1s.<\/li>\n\n\n\n<li><strong>Escalabilidad:<\/strong>&nbsp;Agregar nuevas funcionalidades es m\u00e1s sencillo al combinar componentes existentes.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejemplo de Desarrollo Basado en Componentes:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Supongamos que est\u00e1s construyendo una aplicaci\u00f3n de comercio electr\u00f3nico. Puedes dividirla en componentes como \u00abProducto\u00bb, \u00abCarrito de Compras\u00bb, \u00abBarra de Navegaci\u00f3n\u00bb y \u00abFormulario de Pago\u00bb. Cada componente tiene su propia l\u00f3gica y presentaci\u00f3n.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo de componente \"Producto\"\r\nclass ProductoComponent {\r\n    constructor(nombre, precio, imagen) {\r\n        this.nombre = nombre;\r\n        this.precio = precio;\r\n        this.imagen = imagen;\r\n    }\r\n\r\n    render() {\r\n        return `\r\n            &lt;div class=\"producto\">\r\n                &lt;img src=\"${this.imagen}\" alt=\"${this.nombre}\">\r\n                &lt;h2>${this.nombre}&lt;\/h2>\r\n                &lt;p>Precio: $${this.precio}&lt;\/p>\r\n            &lt;\/div>\r\n        `;\r\n    }\r\n}\r\n\r\n\/\/ Ejemplo de componente \"Carrito de Compras\"\r\nclass CarritoComponent {\r\n    constructor() {\r\n        this.productos = &#91;];\r\n    }\r\n\r\n    agregarProducto(producto) {\r\n        this.productos.push(producto);\r\n    }\r\n\r\n    render() {\r\n        const productosHTML = this.productos.map(producto => producto.render()).join('');\r\n        return `\r\n            &lt;div class=\"carrito\">\r\n                &lt;h2>Carrito de Compras&lt;\/h2>\r\n                ${productosHTML}\r\n            &lt;\/div>\r\n        `;\r\n    }\r\n}\r\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejercicio de Desarrollo Basado en Componentes:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ejercicio: Crea un proyecto web simple que utilice el desarrollo basado en componentes. Dise\u00f1a componentes reutilizables para la navegaci\u00f3n, la presentaci\u00f3n de productos y la visualizaci\u00f3n del carrito de compras. Luego, comp\u00f3n estos componentes para crear una p\u00e1gina web completa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este ejercicio permitir\u00e1 a los lectores aplicar directamente el enfoque de desarrollo basado en componentes y experimentar c\u00f3mo simplifica la construcci\u00f3n y el mantenimiento de aplicaciones frontend.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Arquitectura de Aplicaciones de Comercio Electr\u00f3nico<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>La arquitectura de aplicaciones de comercio electr\u00f3nico es un aspecto cr\u00edtico para el \u00e9xito de las tiendas en l\u00ednea. En este cap\u00edtulo, exploraremos en detalle c\u00f3mo dise\u00f1ar una arquitectura eficiente para aplicaciones de comercio electr\u00f3nico. Proporcionaremos ejemplos y ejercicios para que los lectores puedan practicar y profundizar en su comprensi\u00f3n de este tema esencial.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Importancia de la Arquitectura en Comercio Electr\u00f3nico<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una arquitectura s\u00f3lida es crucial en aplicaciones de comercio electr\u00f3nico por varias razones:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Escalabilidad:<\/strong>&nbsp;Las tiendas en l\u00ednea pueden experimentar picos de tr\u00e1fico, por lo que la arquitectura debe ser escalable para manejar cargas elevadas.<\/li>\n\n\n\n<li><strong>Seguridad:<\/strong>&nbsp;La informaci\u00f3n sensible de los clientes, como datos de pago, debe estar protegida de amenazas de seguridad.<\/li>\n\n\n\n<li><strong>Experiencia del Usuario:<\/strong>&nbsp;La arquitectura influye en la velocidad de carga, la navegaci\u00f3n y la experiencia del usuario, lo que afecta las tasas de conversi\u00f3n.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Componentes de una Arquitectura de Comercio Electr\u00f3nico<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Frontend:<\/strong>&nbsp;La interfaz de usuario de la tienda en l\u00ednea. Debe ser atractiva, receptiva y amigable para el usuario.<\/li>\n\n\n\n<li><strong>Backend:<\/strong>&nbsp;La l\u00f3gica del negocio, como el procesamiento de pedidos, la gesti\u00f3n de inventario y la seguridad.<\/li>\n\n\n\n<li><strong>Base de Datos:<\/strong>&nbsp;Almacena informaci\u00f3n de productos, clientes, pedidos y m\u00e1s.<\/li>\n\n\n\n<li><strong>Servidores y Redes:<\/strong>&nbsp;Garantizan la disponibilidad y el rendimiento del sitio web.<\/li>\n\n\n\n<li><strong>Pasarelas de Pago:<\/strong>&nbsp;Conectan la tienda con proveedores de servicios de pago para procesar transacciones seguras.<\/li>\n\n\n\n<li><strong>Seguridad:<\/strong>&nbsp;Protege los datos del cliente y previene amenazas como el robo de datos.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejemplo de Arquitectura de Comercio Electr\u00f3nico:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Supongamos que est\u00e1s dise\u00f1ando una arquitectura para una tienda en l\u00ednea. Puedes optar por una arquitectura basada en microservicios, que divide la aplicaci\u00f3n en componentes independientes y escalables. A continuaci\u00f3n, un ejemplo simplificado:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Frontend:<\/strong>&nbsp;Una SPA (Aplicaci\u00f3n de P\u00e1gina \u00danica) que muestra productos, carrito de compras y opciones de pago.<\/li>\n\n\n\n<li><strong>Microservicio de Productos:<\/strong>&nbsp;Gestiona el cat\u00e1logo de productos y la informaci\u00f3n del inventario.<\/li>\n\n\n\n<li><strong>Microservicio de Pedidos:<\/strong>&nbsp;Administra el proceso de compra y las \u00f3rdenes de los clientes.<\/li>\n\n\n\n<li><strong>Base de Datos:<\/strong>&nbsp;Almacena informaci\u00f3n de productos, pedidos y usuarios.<\/li>\n\n\n\n<li><strong>Servidores y CDN:<\/strong>&nbsp;Distribuyen contenido est\u00e1tico y aseguran la disponibilidad de la aplicaci\u00f3n.<\/li>\n\n\n\n<li><strong>Pasarelas de Pago:<\/strong>&nbsp;Procesan transacciones de manera segura y se integran con proveedores de servicios de pago.<\/li>\n\n\n\n<li><strong>Seguridad:<\/strong>&nbsp;Incluye medidas de seguridad como certificados SSL, cortafuegos y autenticaci\u00f3n de dos factores.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejercicio de Dise\u00f1o de Arquitectura:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ejercicio: Dise\u00f1a la arquitectura de una tienda en l\u00ednea ficticia. Define los componentes, c\u00f3mo se comunicar\u00e1n entre s\u00ed y c\u00f3mo garantizar\u00e1s la escalabilidad y la seguridad. Luego, crea un diagrama de la arquitectura para visualizarla.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este ejercicio ayudar\u00e1 a los lectores a aplicar directamente conceptos de arquitectura en el contexto de una tienda en l\u00ednea y comprender c\u00f3mo los componentes interact\u00faan para brindar una experiencia de compra en l\u00ednea eficiente y segura.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los patrones de dise\u00f1o y la arquitectura son fundamentales para el desarrollo frontend de aplicaciones web de calidad. En este cap\u00edtulo, exploraremos patrones comunes de dise\u00f1o y consideraciones arquitect\u00f3nicas en el desarrollo frontend. Proporcionaremos ejemplos y ejercicios para que los lectores puedan practicar y profundizar en su comprensi\u00f3n de estos conceptos cr\u00edticos. Importancia de los [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2125,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[33],"tags":[],"class_list":["post-638","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript-y-otras-hierbas"],"uagb_featured_image_src":{"full":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Patrones-de-Diseno.jpg",1000,664,false],"thumbnail":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Patrones-de-Diseno-150x150.jpg",150,150,true],"medium":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Patrones-de-Diseno-300x199.jpg",300,199,true],"medium_large":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Patrones-de-Diseno-768x510.jpg",768,510,true],"large":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Patrones-de-Diseno.jpg",1000,664,false],"1536x1536":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Patrones-de-Diseno.jpg",1000,664,false],"2048x2048":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Patrones-de-Diseno.jpg",1000,664,false]},"uagb_author_info":{"display_name":"arquitecto","author_link":"https:\/\/stackcodelab.com\/blog\/author\/arquitecto\/"},"uagb_comment_info":0,"uagb_excerpt":"Los patrones de dise\u00f1o y la arquitectura son fundamentales para el desarrollo frontend de aplicaciones web de calidad. En este cap\u00edtulo, exploraremos patrones comunes de dise\u00f1o y consideraciones arquitect\u00f3nicas en el desarrollo frontend. Proporcionaremos ejemplos y ejercicios para que los lectores puedan practicar y profundizar en su comprensi\u00f3n de estos conceptos cr\u00edticos. Importancia de los&hellip;","_links":{"self":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/638","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/comments?post=638"}],"version-history":[{"count":2,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/638\/revisions"}],"predecessor-version":[{"id":2126,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/638\/revisions\/2126"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/media\/2125"}],"wp:attachment":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/media?parent=638"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/categories?post=638"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/tags?post=638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}