{"id":74793,"date":"2020-03-20T20:42:19","date_gmt":"2020-03-20T17:42:19","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/quarkus-sverhzvukovaya-subatomnaya-java-kratkij-obzor-frejmvorka"},"modified":"2020-03-20T20:42:19","modified_gmt":"2020-03-20T17:42:19","slug":"quarkus-sverhzvukovaya-subatomnaya-java-kratkij-obzor-frejmvorka","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/quarkus-sverhzvukovaya-subatomnaya-java-kratkij-obzor-frejmvorka","title":{"rendered":"Quarkus: Java subat\u00f3mico a velocidad supers\u00f3nica. Resumen del marco de trabajo","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Quarkus: Java subat\u00f3mico a velocidad supers\u00f3nica. Resumen del marco de trabajo\" src=\"\/wp-content\/uploads\/2020\/03\/b40e193b4a696206aad8b08a5e4795a1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"vvedenie\">Introducci\u00f3n<\/h3>\n<p><\/p>\n<p>El siete de marzo, la empresa RedHat (pronto IBM) <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2019\/03\/07\/quarkus-next-generation-kubernetes-native-java-framework\/\">ha presentado<\/a><\/noindex> nuevo marco de trabajo \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/\">Quarkus<\/a><\/noindex>. Seg\u00fan los desarrolladores, este marco de trabajo se basa en GraalVM y OpenJDK HotSpot y est\u00e1 dise\u00f1ado para Kubernetes. El stack de Quarkus incluye: JPA\/Hibernate, JAX-RS\/RESTEasy, Eclipse Vert.x, Netty, Apache Camel, Kafka, Prometheus y otros.<\/p>\n<p><\/p>\n<p>El objetivo de su creaci\u00f3n es hacer de Java la plataforma l\u00edder para implementaci\u00f3n en Kubernetes y desarrollo de aplicaciones sin servidor, proporcionando a los desarrolladores un enfoque unificado para el desarrollo tanto en estilo reactivo como imperativo.<\/p>\n<p><\/p>\n<p>Si observamos la <noindex><a rel=\"nofollow\" href=\"https:\/\/dzone.com\/articles\/classification-of-development-frameworks-for-enter\"><u>esto<\/u><\/a><\/noindex> en la clasificaci\u00f3n de frameworks, Quarkus se sit\u00faa entre los &#171;Agregadores\/Generadores de C\u00f3digo&#187; y los &#171;Frameworks Fullstack de Alto Nivel&#187;. Ya es m\u00e1s que un agregador, pero no llega a ser full-stack, ya que est\u00e1 dise\u00f1ado para el desarrollo de backend.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Se promete una velocidad de arranque de aplicaci\u00f3n muy alta y un bajo consumo de memoria. Aqu\u00ed est\u00e1n los datos del sitio del desarrollador:<\/p>\n<p><\/p>\n<p>Tiempo desde el inicio hasta la primera respuesta (s):<\/p>\n<p><\/p>\n<p>Configuraci\u00f3n<br \/>\nREST<br \/>\nREST+JPA<\/p>\n<p>Quarkus+GraalVM<br \/>\n0.014<br \/>\n0.055<\/p>\n<p>Quarkus+OpenJDK<br \/>\n0.75<br \/>\n2.5<\/p>\n<p>Traditional Cloud Native Stack*<br \/>\n4.3<br \/>\n9.5<\/p>\n<p><\/p>\n<p>Consumo de memoria (Mb):<\/p>\n<p><\/p>\n<p>Configuraci\u00f3n<br \/>\nREST<br \/>\nREST+JPA<\/p>\n<p>Quarkus+GraalVM<br \/>\n13<br \/>\n35<\/p>\n<p>Quarkus+OpenJDK<br \/>\n74<br \/>\n130<\/p>\n<p>Traditional Cloud Native Stack*<br \/>\n140<br \/>\n218<\/p>\n<p><\/p>\n<p>Impresionante, \u00bfno?<\/p>\n<p><\/p>\n<p>*<em>No encontr\u00e9 informaci\u00f3n sobre este stack de tecnolog\u00edas, se puede suponer que es alg\u00fan Spring Boot con aditamentos adicionales.<\/em>.<\/p>\n<p><\/p>\n<h3 id=\"hello-world\">\u00a1Hola Mundo!<\/h3>\n<p><\/p>\n<p>La aplicaci\u00f3n m\u00e1s simple escrita en Quarkus se ver\u00e1 as\u00ed:<\/p>\n<p><\/p>\n<pre><code class=\"java\">@Path(\"\/hello\")\npublic class GreetingResource {\n\n   @GET\n   @Produces(MediaType.TEXT_PLAIN)\n   public String hello() {\n       return \"hello\";\n   }\n}<\/code><\/pre>\n<p><\/p>\n<p>\u00a1Es literalmente una sola clase y es suficiente! Se puede ejecutar la aplicaci\u00f3n utilizando Maven en modo de desarrollo:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">mvn compile quarkus:dev\n\u2026\n$ curl http:\/\/localhost:8080\/hello\nhello<\/code><\/pre>\n<p><\/p>\n<p>La diferencia con una aplicaci\u00f3n habitual es que \u00a1no hay una clase Application! Quarkus soporta la recarga en caliente, as\u00ed que se puede modificar la aplicaci\u00f3n sin reiniciarla, lo que hace que el desarrollo sea a\u00fan m\u00e1s r\u00e1pido. <\/p>\n<p><\/p>\n<p>\u00bfQu\u00e9 sigue? Se puede agregar un servicio al controlador utilizando la anotaci\u00f3n <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/inject\/\" class=\"user_link\">Inject<\/a><\/noindex>. C\u00f3digo del servicio:<\/p>\n<p><\/p>\n<pre><code class=\"java\">@ApplicationScoped\npublic class GreetingService {\n\n   public String greeting(String name) {\n       return \"Hello \" + name + \"!\";\n   }\n}<\/code><\/pre>\n<p><\/p>\n<p>Controlador:<\/p>\n<p><\/p>\n<pre><code class=\"java\">@Path(\"\/hello\")\npublic class GreetingResource {\n\n   @Inject\n   GreetingService service;\n\n   @GET\n   @Produces(MediaType.TEXT_PLAIN)\n   @Path(\"\/{name}\")\n   public String greeting(@PathParam(\"name\") String name) {\n       return service.greeting(name);\n   }\n}<\/code><\/pre>\n<p><\/p>\n<pre><code class=\"plaintext\">$ curl http:\/\/localhost:8080\/hello\/developer\nHello developer!<\/code><\/pre>\n<p><\/p>\n<p>Note que en Quarkus se utilizan anotaciones est\u00e1ndar de frameworks conocidos: CDI y JAX-RS. No es necesario aprender nada nuevo si usted ha trabajado con CDI y JAX-RS antes, por supuesto. <\/p>\n<p><\/p>\n<h3 id=\"rabota-s-bazoy-dannyh\">Trabajo con la base de datos<\/h3>\n<p><\/p>\n<p>Se utilizan Hibernate y las anotaciones est\u00e1ndar de JPA para las entidades. Al igual que con los controladores REST, es necesario escribir un m\u00ednimo de c\u00f3digo. Basta con especificar las dependencias en el archivo de construcci\u00f3n y agregar las anotaciones. <code>@Entity<\/code> y configurar el datasource en application.properties. <\/p>\n<p><\/p>\n<p>Eso es todo. No se necesitan sessionFactory, persistence.xml ni otros archivos de servicio. Solo escribimos el c\u00f3digo que necesitamos. Sin embargo, si es necesario, se puede crear un archivo persistence.xml y configurar el nivel ORM de manera m\u00e1s detallada. <\/p>\n<p><\/p>\n<p>Quarkus soporta la cach\u00e9 de entidades, colecciones para relaciones uno a muchos, as\u00ed como de consultas. A primera vista, parece genial, pero esto <em>es cach\u00e9<\/em> local, para un solo nodo de Kubernetes. Es decir, las cach\u00e9s de diferentes nodos no est\u00e1n sincronizadas entre s\u00ed. Espero que esto sea temporal. <\/p>\n<p><\/p>\n<h3 id=\"asinhronnoe-vypolnenie-koda\">Ejecuci\u00f3n as\u00edncrona del c\u00f3digo<\/h3>\n<p><\/p>\n<p>Como se mencion\u00f3 anteriormente, Quarkus tambi\u00e9n admite el estilo de programaci\u00f3n reactiva. El c\u00f3digo de la aplicaci\u00f3n anterior se puede escribir de otra manera.<\/p>\n<p><\/p>\n<pre><code class=\"java\">@Path(\"\/hello\")\npublic class GreetingResource {\n\n   @GET\n   @Produces(MediaType.TEXT_PLAIN)\n   @Path(\"\/{name}\")\n   public CompletionStage greeting(@PathParam(\"name\") String name) {\n       return CompletableFuture.supplyAsync(() -&gt; {\n           return \"\u00a1Hola \" + name + \"!\";\n       });\n   }\n}<\/code><\/pre>\n<p><\/p>\n<p>El c\u00f3digo as\u00edncrono tambi\u00e9n se puede trasladar a un servicio; el resultado ser\u00e1 el mismo. <\/p>\n<p><\/p>\n<h3 id=\"testirovanie\">Pruebas<\/h3>\n<p><\/p>\n<p>Las pruebas para aplicaciones Quarkus se pueden escribir en JUnit4 o JUnit5. A continuaci\u00f3n se muestra un ejemplo de prueba para el endpoint, escrito con RestAssured, aunque se puede utilizar otro framework: <\/p>\n<p><\/p>\n<pre><code class=\"java\">@QuarkusTest\npublic class GreetingResourceTest {\n\n   @Test\n   public void testGreetingEndpoint() {\n       String uuid = UUID.randomUUID().toString();\n       given()\n         .pathParam(\"name\", uuid)\n         .when().get(\"\/hello\/{name}\")\n         .then()\n           .statusCode(200)\n           .body(is(\"\u00a1Hola \" + uuid + \"!\"));\n   }\n}<\/code><\/pre>\n<p><\/p>\n<p>La anotaci\u00f3n @QuarkusTest indica que se debe iniciar la aplicaci\u00f3n antes de ejecutar las pruebas. Por lo dem\u00e1s, es el mismo c\u00f3digo conocido por todos los desarrolladores. <\/p>\n<p><\/p>\n<h3 id=\"platformo-zavisimoe-prilozhenie\">Aplicaci\u00f3n dependiente de la plataforma<\/h3>\n<p><\/p>\n<p>Dado que Quarkus est\u00e1 estrechamente integrado con GraalVM, por supuesto, se puede generar c\u00f3digo dependiente de la plataforma. Para ello, es necesario instalar GraalVM y establecer la variable de entorno GRAALVM_HOME. Luego, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/quarkusio\/quarkus-quickstarts\/blob\/fae88eaab10ed4d68ac44e0b8b7416e631b8a6f9\/getting-started-knative\/pom.xml#L105\">escribir un perfil para la construcci\u00f3n<\/a><\/noindex> y especificarlo al construir la aplicaci\u00f3n:<\/p>\n<p><\/p>\n<pre><code class=\"java\">mvn package -Pnative<\/code><\/pre>\n<p><\/p>\n<p>Lo interesante es que se puede probar la aplicaci\u00f3n generada. Y esto es importante, ya que la ejecuci\u00f3n del c\u00f3digo \"nativo\" puede diferir de la ejecuci\u00f3n en la JVM. La anotaci\u00f3n @SubstrateTest ejecuta el c\u00f3digo dependiente de la plataforma de la aplicaci\u00f3n. La reutilizaci\u00f3n del c\u00f3digo existente de las pruebas se puede realizar mediante la herencia, por lo que el c\u00f3digo para probar una aplicaci\u00f3n dependiente de la plataforma se ver\u00e1 as\u00ed:<\/p>\n<p><\/p>\n<pre><code class=\"java\">@SubstrateTest\npublic class GreetingResourceIT extends GreetingResourceTest {\n\n}<\/code><\/pre>\n<p><\/p>\n<p>La imagen generada se puede empaquetar en Docker y ejecutarse en Kubernetes o OpenShift, como se detalla en <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/kubernetes-guide\">la gu\u00eda<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"instrumentariy\">Herramientas<\/h3>\n<p><\/p>\n<p>El marco Quarkus se puede utilizar con Maven y Gradle. Maven se admite completamente, a diferencia de Gradle. Desafortunadamente, en este momento Gradle no admite la generaci\u00f3n de un proyecto vac\u00edo, en el sitio hay una detallada <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/gradle-tooling.html\">manual<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"rasshireniya\">Extensiones<\/h3>\n<p><\/p>\n<p>Quarkus es un marco extensible. Actualmente, existen alrededor de <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/extensions\/\">40 extensiones<\/a><\/noindex>, que a\u00f1aden diversas funcionalidades, desde soporte para <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/extensions\/#migration\">el contenedor Spring DI<\/a><\/noindex> y <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/extensions\/#integration\">Apache Camel<\/a><\/noindex> hasta el registro y la publicaci\u00f3n de m\u00e9tricas para servicios en ejecuci\u00f3n. Y ya existe una extensi\u00f3n para soportar la escritura de aplicaciones en el lenguaje Kotlin, adem\u00e1s de Java. <\/p>\n<p><\/p>\n<h2 id=\"zaklyuchenie\">Conclusi\u00f3n<\/h2>\n<p><\/p>\n<p>En mi opini\u00f3n, Quarkus est\u00e1 muy a la moda. El desarrollo del c\u00f3digo backend se est\u00e1 volviendo cada vez m\u00e1s f\u00e1cil, y este marco simplifica y acelera a\u00fan m\u00e1s el desarrollo de servicios, a\u00f1adiendo soporte \"nativo\" para Docker y Kubernetes. Un gran plus es el soporte integrado para GraalVM y la generaci\u00f3n de im\u00e1genes dependientes de la plataforma, lo que permite que los servicios se inicien realmente r\u00e1pido y ocupen poco espacio en memoria. Y esto es muy importante en nuestra \u00e9poca de entusiasmo masivo por los microservicios y la arquitectura sin servidor.<\/p>\n<p><\/p>\n<p>El sitio oficial es \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/\">quarkus.io<\/a><\/noindex>. Ya hay ejemplos de proyectos para un r\u00e1pido inicio en <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/quarkusio\/quarkus-quickstarts\">GitHub<\/a><\/noindex>.\n<\/p>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/haulmont\/blog\/443242\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0421\u0435\u0434\u044c\u043c\u043e\u0433\u043e \u043c\u0430\u0440\u0442\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f RedHat (\u0432\u0441\u043a\u043e\u0440\u0435 \u2014 IBM) \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u043d\u043e\u0432\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u2014 Quarkus. \u041f\u043e \u0441\u043b\u043e\u0432\u0430\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u044d\u0442\u043e\u0442 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0431\u0430\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 GraalVM \u0438 OpenJDK HotSpot \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f Kubernetes. \u0421\u0442\u0435\u043a Quarkus \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f: JPA\/Hibernate, JAX-RS\/RESTEasy, Eclipse Vert.x, Netty, Apache Camel, Kafka, Prometheus \u0438 \u0434\u0440\u0443\u0433\u0438\u0435. \u0426\u0435\u043b\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u2014 \u0441\u0434\u0435\u043b\u0430\u0442\u044c Java \u043b\u0438\u0434\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0432 Kubernetes [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":74794,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-74793","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/quarkus-sverhzvukovaya-subatomnaya-java-kratkij-obzor-frejmvorka\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Quarkus \u2014 \u0441\u0432\u0435\u0440\u0445\u0437\u0432\u0443\u043a\u043e\u0432\u0430\u044f \u0441\u0443\u0431\u0430\u0442\u043e\u043c\u043d\u0430\u044f Java. \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/quarkus-sverhzvukovaya-subatomnaya-java-kratkij-obzor-frejmvorka\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-03-20T17:42:19+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-20T17:42:19+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Quarkus \u2014 Java subs\u00f3nica de pr\u00f3xima generaci\u00f3n. Breve rese\u00f1a del marco | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/quarkus-sverhzvukovaya-subatomnaya-java-kratkij-obzor-frejmvorka","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Quarkus \u2014 \u0441\u0432\u0435\u0440\u0445\u0437\u0432\u0443\u043a\u043e\u0432\u0430\u044f \u0441\u0443\u0431\u0430\u0442\u043e\u043c\u043d\u0430\u044f Java. \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 | ProHoster","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/quarkus-sverhzvukovaya-subatomnaya-java-kratkij-obzor-frejmvorka","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-03-20T17:42:19+00:00","article:modified_time":"2020-03-20T17:42:19+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"74793","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:07:28","updated":"2022-09-30 18:17:47","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/74793","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=74793"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/74793\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/74794"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=74793"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=74793"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=74793"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}