{"id":2061,"date":"2023-12-01T12:22:16","date_gmt":"2023-12-01T15:22:16","guid":{"rendered":"https:\/\/stackcodelab.com\/blog\/?p=2061"},"modified":"2023-12-01T12:22:23","modified_gmt":"2023-12-01T15:22:23","slug":"capitulo-11-desarrollo-de-aplicaciones-empresariales-enterprise-javabeans-ejb","status":"publish","type":"post","link":"https:\/\/stackcodelab.com\/blog\/capitulo-11-desarrollo-de-aplicaciones-empresariales-enterprise-javabeans-ejb\/","title":{"rendered":"Cap\u00edtulo 11: Desarrollo de Aplicaciones Empresariales (Enterprise JavaBeans &#8211; EJB)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">En este cap\u00edtulo, exploraremos el desarrollo de aplicaciones empresariales en Java utilizando Enterprise JavaBeans (EJB). Aprender\u00e1s c\u00f3mo crear componentes empresariales reutilizables que se ejecutan en un entorno de servidor de aplicaciones.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>11.1. Introducci\u00f3n a Enterprise JavaBeans (EJB)<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Los Enterprise JavaBeans (EJB) son componentes reutilizables y escalables que se utilizan en aplicaciones empresariales para encapsular la l\u00f3gica empresarial y proporcionar servicios a trav\u00e9s de una arquitectura distribuida.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>11.2. Tipos de EJB<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Existen tres tipos principales de EJB:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>EJB de sesi\u00f3n<\/strong>: Representan la l\u00f3gica de negocio y pueden ser de dos tipos: Stateless (sin estado) o Stateful (con estado).<\/li>\n\n\n\n<li><strong>EJB de entidad<\/strong>: Representan objetos de datos persistentes que se relacionan con una tabla de base de datos.<\/li>\n\n\n\n<li><strong>EJB de mensaje<\/strong>: Permiten la comunicaci\u00f3n as\u00edncrona entre componentes de una aplicaci\u00f3n empresarial.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><a>11.3. Creaci\u00f3n de un EJB de Sesi\u00f3n<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Un EJB de sesi\u00f3n es una clase Java que encapsula la l\u00f3gica empresarial y se puede acceder de forma remota. Aqu\u00ed hay un ejemplo de c\u00f3mo crear un EJB de sesi\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import javax.ejb.Stateless;\r\nimport javax.ejb.Remote;\r\n\r\n@Stateless\r\n@Remote(EjbInterface.class)\r\npublic class EjbBean implements EjbInterface {\r\n    public String saludar(String nombre) {\r\n        return \"Hola, \" + nombre + \" desde el EJB.\";\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a>11.4. Creaci\u00f3n de un Cliente EJB<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes crear un cliente que acceda al EJB de sesi\u00f3n de la siguiente manera:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import javax.naming.Context;\r\nimport javax.naming.InitialContext;\r\nimport ejb.EjbInterface;\r\n\r\npublic class ClienteEjb {\r\n    public static void main(String&#91;] args) {\r\n        try {\r\n            Context context = new InitialContext();\r\n            EjbInterface ejb = (EjbInterface) context.lookup(\"java:global\/ejb\/EjbBean!ejb.EjbInterface\");\r\n            String mensaje = ejb.saludar(\"Usuario\");\r\n            System.out.println(mensaje);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a>11.5. Ejercicios de Pr\u00e1ctica<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejercicio 11.5.1: Crear un EJB de Sesi\u00f3n para Realizar C\u00e1lculos<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Desarrolla un EJB de sesi\u00f3n que realice operaciones matem\u00e1ticas (suma, resta, multiplicaci\u00f3n, divisi\u00f3n) y permita a un cliente realizar c\u00e1lculos utilizando el EJB.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejercicio 11.5.2: Crear un EJB de Entidad para Gestionar Datos de Empleados<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Crea un EJB de entidad que gestione los datos de empleados, como nombres, salarios, fechas de ingreso, etc., y permita a un cliente acceder y modificar estos datos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Resumen del Cap\u00edtulo<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este cap\u00edtulo ha introducido el desarrollo de aplicaciones empresariales en Java utilizando Enterprise JavaBeans (EJB). Hemos explorado los tipos de EJB y c\u00f3mo crear un EJB de sesi\u00f3n y un cliente que acceda a \u00e9l de forma remota. Los ejercicios proporcionados permiten a los lectores practicar y profundizar en su comprensi\u00f3n del desarrollo de aplicaciones empresariales en Java. Los EJB son esenciales para construir aplicaciones escalables y reutilizables en entornos empresariales.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>Respuesta ejercicio 11.5.1:<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para desarrollar un EJB de sesi\u00f3n que realice operaciones matem\u00e1ticas (suma, resta, multiplicaci\u00f3n, divisi\u00f3n) y permita a un cliente realizar c\u00e1lculos utilizando el EJB, sigue estos pasos:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 1: Crear el Proyecto EJB<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Crea un nuevo proyecto EJB en tu entorno de desarrollo Java EE, como Eclipse o NetBeans.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 2: Crear un EJB de Sesi\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2.1. Crea un EJB de sesi\u00f3n llamado&nbsp;<code>CalculadoraBean<\/code>&nbsp;que proporcionar\u00e1 m\u00e9todos para realizar operaciones matem\u00e1ticas.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import javax.ejb.Stateless;\r\n\r\n@Stateless\r\npublic class CalculadoraBean {\r\n    public int sumar(int a, int b) {\r\n        return a + b;\r\n    }\r\n\r\n    public int restar(int a, int b) {\r\n        return a - b;\r\n    }\r\n\r\n    public int multiplicar(int a, int b) {\r\n        return a * b;\r\n    }\r\n\r\n    public int dividir(int a, int b) {\r\n        if (b != 0) {\r\n            return a \/ b;\r\n        } else {\r\n            throw new ArithmeticException(\"Divisi\u00f3n por cero no permitida\");\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 3: Crear un Cliente EJB<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3.1. Crea un cliente que acceda al EJB de sesi\u00f3n y realice c\u00e1lculos utilizando los m\u00e9todos proporcionados.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import javax.naming.Context;\r\nimport javax.naming.InitialContext;\r\n\r\npublic class ClienteCalculadora {\r\n    public static void main(String&#91;] args) {\r\n        try {\r\n            Context context = new InitialContext();\r\n            CalculadoraBean calculadora = (CalculadoraBean) context.lookup(\"java:global\/ejb\/CalculadoraBean!ejb.CalculadoraBean\");\r\n\r\n            int resultadoSuma = calculadora.sumar(10, 5);\r\n            System.out.println(\"10 + 5 = \" + resultadoSuma);\r\n\r\n            int resultadoResta = calculadora.restar(10, 5);\r\n            System.out.println(\"10 - 5 = \" + resultadoResta);\r\n\r\n            int resultadoMultiplicacion = calculadora.multiplicar(10, 5);\r\n            System.out.println(\"10 * 5 = \" + resultadoMultiplicacion);\r\n\r\n            int resultadoDivision = calculadora.dividir(10, 0);\r\n            System.out.println(\"10 \/ 0 = \" + resultadoDivision);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 4: Configuraci\u00f3n del Despliegue<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4.1. Aseg\u00farate de que el EJB de sesi\u00f3n est\u00e9 configurado adecuadamente en el archivo&nbsp;<code>ejb-jar.xml<\/code>&nbsp;o utilizando anotaciones si est\u00e1s utilizando Java EE 6 o versiones posteriores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 5: Ejecuci\u00f3n de la Aplicaci\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">5.1. Ejecuta el cliente y observa c\u00f3mo realiza operaciones matem\u00e1ticas utilizando el EJB de sesi\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Resultado Esperado:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El cliente accede al EJB de sesi\u00f3n&nbsp;<code>CalculadoraBean<\/code>, que proporciona m\u00e9todos para realizar operaciones matem\u00e1ticas, incluyendo suma, resta, multiplicaci\u00f3n y divisi\u00f3n. El cliente realiza c\u00e1lculos utilizando estos m\u00e9todos y muestra los resultados. Si se intenta una divisi\u00f3n por cero, se captura y se lanza una excepci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este ejercicio muestra c\u00f3mo desarrollar un EJB de sesi\u00f3n en Java que proporciona funcionalidad de c\u00e1lculo y c\u00f3mo acceder a \u00e9l desde un cliente EJB. Puedes personalizar este ejemplo para incluir m\u00e1s operaciones matem\u00e1ticas o l\u00f3gica adicional en el EJB.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>Respuesta ejercicio 11.5.2:<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para crear un EJB de entidad que gestione los datos de empleados y permita a un cliente acceder y modificar estos datos, sigue estos pasos:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 1: Crear el Proyecto EJB<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Crea un nuevo proyecto EJB en tu entorno de desarrollo Java EE, como Eclipse o NetBeans.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><br><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 2: Crear una Clase de Entidad<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2.1. Crea una clase de entidad llamada&nbsp;<code>Empleado<\/code>&nbsp;que represente a los empleados con atributos como nombres, salarios, fechas de ingreso, etc.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import javax.persistence.Entity;\r\nimport javax.persistence.GeneratedValue;\r\nimport javax.persistence.GenerationType;\r\nimport javax.persistence.Id;\r\nimport java.io.Serializable;\r\nimport java.util.Date;\r\n\r\n@Entity\r\npublic class Empleado implements Serializable {\r\n    @Id\r\n    @GeneratedValue(strategy = GenerationType.IDENTITY)\r\n    private Long id;\r\n    private String nombre;\r\n    private double salario;\r\n    private Date fechaIngreso;\r\n\r\n    \/\/ Getters y setters\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 3: Crear un EJB de Sesi\u00f3n para Gestionar Empleados<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3.1. Crea un EJB de sesi\u00f3n llamado&nbsp;<code>GestorEmpleados<\/code>&nbsp;que proporcionar\u00e1 m\u00e9todos para acceder y gestionar los datos de los empleados.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import javax.ejb.Stateless;\r\nimport javax.persistence.EntityManager;\r\nimport javax.persistence.PersistenceContext;\r\n\r\n@Stateless\r\npublic class GestorEmpleados {\r\n    @PersistenceContext\r\n    private EntityManager entityManager;\r\n\r\n    public Empleado crearEmpleado(String nombre, double salario, Date fechaIngreso) {\r\n        Empleado empleado = new Empleado();\r\n        empleado.setNombre(nombre);\r\n        empleado.setSalario(salario);\r\n        empleado.setFechaIngreso(fechaIngreso);\r\n        entityManager.persist(empleado);\r\n        return empleado;\r\n    }\r\n\r\n    public Empleado obtenerEmpleado(Long id) {\r\n        return entityManager.find(Empleado.class, id);\r\n    }\r\n\r\n    public Empleado actualizarEmpleado(Empleado empleado) {\r\n        return entityManager.merge(empleado);\r\n    }\r\n\r\n    public void eliminarEmpleado(Long id) {\r\n        Empleado empleado = obtenerEmpleado(id);\r\n        entityManager.remove(empleado);\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 4: Crear un Cliente EJB<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4.1. Crea un cliente que acceda al EJB de sesi\u00f3n&nbsp;<code>GestorEmpleados<\/code>&nbsp;y realice operaciones con los datos de los empleados.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import javax.naming.Context;\r\nimport javax.naming.InitialContext;\r\nimport ejb.GestorEmpleados;\r\n\r\npublic class ClienteEmpleados {\r\n    public static void main(String&#91;] args) {\r\n        try {\r\n            Context context = new InitialContext();\r\n            GestorEmpleados gestorEmpleados = (GestorEmpleados) context.lookup(\"java:global\/ejb\/GestorEmpleados\");\r\n\r\n            \/\/ Crear un nuevo empleado\r\n            Empleado empleado = gestorEmpleados.crearEmpleado(\"Juan\", 50000, new Date());\r\n            System.out.println(\"Empleado creado con ID: \" + empleado.getId());\r\n\r\n            \/\/ Obtener y modificar un empleado\r\n            empleado = gestorEmpleados.obtenerEmpleado(empleado.getId());\r\n            empleado.setSalario(55000);\r\n            gestorEmpleados.actualizarEmpleado(empleado);\r\n            System.out.println(\"Empleado actualizado: \" + empleado.getNombre() + \", Salario: \" + empleado.getSalario());\r\n\r\n            \/\/ Eliminar un empleado\r\n            Long empleadoId = empleado.getId();\r\n            gestorEmpleados.eliminarEmpleado(empleadoId);\r\n            System.out.println(\"Empleado eliminado con ID: \" + empleadoId);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 5: Configuraci\u00f3n del Despliegue<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">5.1. Aseg\u00farate de que el EJB de entidad y el EJB de sesi\u00f3n est\u00e9n configurados adecuadamente en el archivo&nbsp;<code>ejb-jar.xml<\/code>&nbsp;o utilizando anotaciones si est\u00e1s utilizando Java EE 6 o versiones posteriores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 6: Ejecuci\u00f3n de la Aplicaci\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">6.1. Ejecuta el cliente y observa c\u00f3mo se crean, modifican y eliminan registros de empleados a trav\u00e9s del EJB de sesi\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Resultado Esperado:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El cliente accede al EJB de sesi\u00f3n&nbsp;<code>GestorEmpleados<\/code>, que proporciona m\u00e9todos para crear, obtener, actualizar y eliminar empleados utilizando el EJB de entidad&nbsp;<code>Empleado<\/code>. El cliente realiza operaciones con los datos de los empleados y muestra los resultados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este ejercicio muestra c\u00f3mo desarrollar un EJB de entidad en Java que gestiona datos de empleados y c\u00f3mo acceder a \u00e9l desde un cliente EJB. Puedes personalizar este ejemplo para incluir m\u00e1s atributos de empleado o l\u00f3gica adicional en el EJB de entidad.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En este cap\u00edtulo, exploraremos el desarrollo de aplicaciones empresariales en Java utilizando Enterprise JavaBeans (EJB). Aprender\u00e1s c\u00f3mo crear componentes empresariales reutilizables que se ejecutan en un entorno de servidor de aplicaciones. 11.1. Introducci\u00f3n a Enterprise JavaBeans (EJB) Los Enterprise JavaBeans (EJB) son componentes reutilizables y escalables que se utilizan en aplicaciones empresariales para encapsular la [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2062,"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":[40],"tags":[45],"class_list":["post-2061","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java-y-otras-hierbas","tag-desarrollo-de-aplicaciones-empresariales-enterprise-javabeans-ejb"],"uagb_featured_image_src":{"full":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Desarrollo-de-Aplicaciones-Empresariales.jpg",1000,667,false],"thumbnail":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Desarrollo-de-Aplicaciones-Empresariales-150x150.jpg",150,150,true],"medium":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Desarrollo-de-Aplicaciones-Empresariales-300x200.jpg",300,200,true],"medium_large":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Desarrollo-de-Aplicaciones-Empresariales-768x512.jpg",768,512,true],"large":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Desarrollo-de-Aplicaciones-Empresariales.jpg",1000,667,false],"1536x1536":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Desarrollo-de-Aplicaciones-Empresariales.jpg",1000,667,false],"2048x2048":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Desarrollo-de-Aplicaciones-Empresariales.jpg",1000,667,false]},"uagb_author_info":{"display_name":"arquitecto","author_link":"https:\/\/stackcodelab.com\/blog\/author\/arquitecto\/"},"uagb_comment_info":0,"uagb_excerpt":"En este cap\u00edtulo, exploraremos el desarrollo de aplicaciones empresariales en Java utilizando Enterprise JavaBeans (EJB). Aprender\u00e1s c\u00f3mo crear componentes empresariales reutilizables que se ejecutan en un entorno de servidor de aplicaciones. 11.1. Introducci\u00f3n a Enterprise JavaBeans (EJB) Los Enterprise JavaBeans (EJB) son componentes reutilizables y escalables que se utilizan en aplicaciones empresariales para encapsular la&hellip;","_links":{"self":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/2061","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=2061"}],"version-history":[{"count":1,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/2061\/revisions"}],"predecessor-version":[{"id":2063,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/2061\/revisions\/2063"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/media\/2062"}],"wp:attachment":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/media?parent=2061"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/categories?post=2061"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/tags?post=2061"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}