{"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\/it\/blog\/administrirovanie\/quarkus-sverhzvukovaya-subatomnaya-java-kratkij-obzor-frejmvorka","title":{"rendered":"Quarkus \u2014 Java subatomica supersonica. Breve panoramica del framework","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Quarkus \u2014 Java subatomica supersonica. Breve panoramica del framework\" src=\"\/wp-content\/uploads\/2020\/03\/b40e193b4a696206aad8b08a5e4795a1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"vvedenie\">Introduzione<\/h3>\n<p><\/p>\n<p>Il sette marzo l'azienda RedHat (presto sar\u00e0 IBM) <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2019\/03\/07\/quarkus-next-generation-kubernetes-native-java-framework\/\">ha presentato<\/a><\/noindex> nuovo framework \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/\">Quarkus<\/a><\/noindex>. Secondo gli sviluppatori, questo framework \u00e8 basato su GraalVM e OpenJDK HotSpot ed \u00e8 progettato per Kubernetes. Lo stack Quarkus include: JPA\/Hibernate, JAX-RS\/RESTEasy, Eclipse Vert.x, Netty, Apache Camel, Kafka, Prometheus e altri.<\/p>\n<p><\/p>\n<p>L'obiettivo della creazione \u00e8 rendere Java la piattaforma leader per il deploy su Kubernetes e lo sviluppo di applicazioni serverless, fornendo agli sviluppatori un approccio unificato allo sviluppo sia in stile reattivo che imperativo.<\/p>\n<p><\/p>\n<p>Se guardiamo a <noindex><a rel=\"nofollow\" href=\"https:\/\/dzone.com\/articles\/classification-of-development-frameworks-for-enter\"><u>questa<\/u><\/a><\/noindex> La classificazione dei framework colloca Quarkus da qualche parte tra &#171;Aggregatori\/Gestori di codice&#187; e &#171;Framework fullstack di alto livello&#187;. \u00c8 gi\u00e0 pi\u00f9 di un aggregatore, ma non raggiunge il livello full-stack, poich\u00e9 \u00e8 progettato per lo sviluppo del backend.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>\u00c8 promessa un'alta velocit\u00e0 di avvio dell'applicazione e un basso consumo di memoria. Ecco i dati del sito dello sviluppatore:<\/p>\n<p><\/p>\n<p>Tempo dall'avvio alla prima risposta (s):<\/p>\n<p><\/p>\n<p>Configurazione<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 di memoria (Mb):<\/p>\n<p><\/p>\n<p>Configurazione<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>Impressionante, vero?<\/p>\n<p><\/p>\n<p>*<em>Non ho trovato informazioni su questo stack tecnologico; si pu\u00f2 ipotizzare che sia un qualche Spring Boot con un'aggiunta.<\/em>.<\/p>\n<p><\/p>\n<h3 id=\"hello-world\">Hello World!<\/h3>\n<p><\/p>\n<p>La pi\u00f9 semplice delle applicazioni scritte in Quarkus apparir\u00e0 cos\u00ec:<\/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>Questo \u00e8 letteralmente un solo classe ed \u00e8 sufficiente! \u00c8 possibile avviare l'applicazione usando Maven in modalit\u00e0 di sviluppo:<\/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 differenza rispetto all'applicazione consueta \u00e8 che non c'\u00e8 la classe Application! Quarkus supporta il hot reload, cos\u00ec si possono apportare modifiche all'applicazione senza riavviarla, rendendo cos\u00ec lo sviluppo ancora pi\u00f9 veloce. <\/p>\n<p><\/p>\n<p>Cosa c'\u00e8 dopo? Si pu\u00f2 aggiungere un servizio al controller utilizzando l'annotazione <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/inject\/\" class=\"user_link\">Inject<\/a><\/noindex>. Codice del servizio:<\/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>Controller:<\/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>Si noti che in Quarkus si utilizzano annotazioni standard da framework familiari \u2014 CDI e JAX-RS. Non c'\u00e8 nulla di nuovo da imparare, se si \u00e8 gi\u00e0 lavorato con CDI e JAX-RS prima, ovviamente. <\/p>\n<p><\/p>\n<h3 id=\"rabota-s-bazoy-dannyh\">Lavorare con il database<\/h3>\n<p><\/p>\n<p>Si utilizza Hibernate e annotazioni JPA standard per le entit\u00e0. Come nel caso dei controller REST, \u00e8 necessario scrivere il minimo codice. \u00c8 sufficiente specificare le dipendenze nel file di build, posizionare le annotazioni <code>@Entity<\/code> e configurare il datasource in application.properties. <\/p>\n<p><\/p>\n<p>Tutto. Niente sessionFactory, persistence.xml e altri file di servizio. Scriviamo solo il codice necessario. Tuttavia, se necessario, \u00e8 possibile creare un file persistence.xml e configurare pi\u00f9 nel dettaglio il livello ORM. <\/p>\n<p><\/p>\n<p>Quarkus supporta la cache delle entit\u00e0, delle raccolte per relazioni uno-a-molti, cos\u00ec come delle query. A prima vista, sembra fantastico, ma \u00e8 <em>cache locale<\/em> per un singolo nodo Kubernetes. Cio\u00e8, le cache dei diversi nodi non sono sincronizzate tra loro. Spero che sia temporaneamente. <\/p>\n<p><\/p>\n<h3 id=\"asinhronnoe-vypolnenie-koda\">Esecuzione asincrona del codice<\/h3>\n<p><\/p>\n<p>Come detto sopra, Quarkus supporta anche lo stile di programmazione reattivo. Il codice dell'applicazione precedente pu\u00f2 essere scritto in un modo diverso.<\/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 \"Hello \" + name + \"!\";\n       });\n   }\n}<\/code><\/pre>\n<p><\/p>\n<p>Il codice asincrono pu\u00f2 anche essere spostato in un servizio, il risultato sar\u00e0 lo stesso. <\/p>\n<p><\/p>\n<h3 id=\"testirovanie\">Test<\/h3>\n<p><\/p>\n<p>I test per le applicazioni Quarkus possono essere scritti con JUnit4 o JUnit5. Di seguito \u00e8 riportato un esempio di test per l'endpoint, scritto utilizzando RestAssured, ma si pu\u00f2 utilizzare anche un altro 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(\"Hello \" + uuid + \"!\"));\n   }\n}<\/code><\/pre>\n<p><\/p>\n<p>L'annotazione @QuarkusTest richiede di avviare l'applicazione prima di eseguire i test. Per il resto, \u00e8 un codice familiare a tutti i programmatori. <\/p>\n<p><\/p>\n<h3 id=\"platformo-zavisimoe-prilozhenie\">Applicazione dipendente dalla piattaforma<\/h3>\n<p><\/p>\n<p>Poich\u00e9 Quarkus \u00e8 strettamente integrato con GraalVM, \u00e8 possibile generare codice dipendente dalla piattaforma. Per fare questo, \u00e8 necessario installare GraalVM e specificare la variabile d'ambiente GRAALVM_HOME. Poi <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/quarkusio\/quarkus-quickstarts\/blob\/fae88eaab10ed4d68ac44e0b8b7416e631b8a6f9\/getting-started-knative\/pom.xml#L105\">scrivere un profilo per la build<\/a><\/noindex> e specificarlo durante la build dell'applicazione:<\/p>\n<p><\/p>\n<pre><code class=\"java\">mvn package -Pnative<\/code><\/pre>\n<p><\/p>\n<p>\u00c8 interessante notare che l'applicazione generata pu\u00f2 essere testata. Ed \u00e8 importante, poich\u00e9 l'esecuzione del codice \"nativo\" pu\u00f2 differire dall'esecuzione sulla JVM. L'annotazione @SubstrateTest esegue il codice specifico della piattaforma dell'applicazione. Il riutilizzo del codice test esistente pu\u00f2 essere effettuato tramite l'ereditariet\u00e0, quindi il codice per il test dell'applicazione specifica della piattaforma apparir\u00e0 cos\u00ec:<\/p>\n<p><\/p>\n<pre><code class=\"java\">@SubstrateTest\npublic class GreetingResourceIT extends GreetingResourceTest {\n\n}<\/code><\/pre>\n<p><\/p>\n<p>L'immagine generata pu\u00f2 essere impacchettata in Docker e avviata in Kubernetes o OpenShift, descritto in dettaglio in <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/kubernetes-guide\">guida<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"instrumentariy\">Strumenti<\/h3>\n<p><\/p>\n<p>Il framework Quarkus pu\u00f2 essere utilizzato con Maven e Gradle. Maven \u00e8 supportato pienamente, a differenza di Gradle. Sfortunatamente, al momento attuale Gradle non supporta la generazione di un progetto vuoto; sul sito ci sono dettagliati <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/gradle-tooling.html\">un tutorial<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"rasshireniya\">Estensioni<\/h3>\n<p><\/p>\n<p>Quarkus \u00e8 un framework estensibile. Attualmente ci sono circa <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/extensions\/\">40 estensioni<\/a><\/noindex>, che aggiungono diverse funzionalit\u00e0 - dal supporto per il <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/extensions\/#migration\">contenitore DI di Spring<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/extensions\/#integration\">Apache Camel<\/a><\/noindex> fino alla registrazione e pubblicazione di metriche per servizi in esecuzione. Esiste gi\u00e0 un'estensione per supportare la scrittura di applicazioni nel linguaggio Kotlin, oltre che in Java. <\/p>\n<p><\/p>\n<h2 id=\"zaklyuchenie\">Conclusione<\/h2>\n<p><\/p>\n<p>A mio avviso, Quarkus \u00e8 decisamente in linea con le tendenze attuali. Lo sviluppo del codice backend sta diventando sempre pi\u00f9 semplice, e questo framework semplifica e accelera ulteriormente lo sviluppo dei servizi, aggiungendo il supporto \"nativo\" per Docker e Kubernetes. Un grande vantaggio \u00e8 il supporto integrato per GraalVM e la generazione di immagini specifiche della piattaforma, il che consente di creare servizi rapidamente avviabili e che occupano poco spazio in memoria. Questo \u00e8 molto importante al giorno d'oggi, in un'epoca di forte interesse per i microservizi e l'architettura serverless.<\/p>\n<p><\/p>\n<p>Sito ufficiale - <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/\">quarkus.io<\/a><\/noindex>. Esempi di progetti per un avvio veloce sono gi\u00e0 disponibili su <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/quarkusio\/quarkus-quickstarts\">GitHub<\/a><\/noindex>.\n<\/p>\n<p>Fonte: <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.1.1 - 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\/it\/blog\/administrirovanie\/quarkus-sverhzvukovaya-subatomnaya-java-kratkij-obzor-frejmvorka\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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 - Java subatomica supersonica. Panoramica del framework | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/quarkus-sverhzvukovaya-subatomnaya-java-kratkij-obzor-frejmvorka","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/74793","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=74793"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/74793\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/74794"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=74793"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=74793"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=74793"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}