{"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\/fr\/blog\/administrirovanie\/quarkus-sverhzvukovaya-subatomnaya-java-kratkij-obzor-frejmvorka","title":{"rendered":"Quarkus est un Java subsonique. Un aper\u00e7u rapide du framework","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Quarkus est un Java subsonique. Un aper\u00e7u rapide du framework\" src=\"\/wp-content\/uploads\/2020\/03\/b40e193b4a696206aad8b08a5e4795a1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"vvedenie\">Introduction<\/h3>\n<p><\/p>\n<p>Le 7 mars, la soci\u00e9t\u00e9 RedHat (bient\u00f4t IBM) <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2019\/03\/07\/quarkus-next-generation-kubernetes-native-java-framework\/\">pr\u00e9sent\u00e9e<\/a><\/noindex> un nouveau framework \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/\">Quarkus<\/a><\/noindex>. Selon les d\u00e9veloppeurs, ce framework est bas\u00e9 sur GraalVM et OpenJDK HotSpot et est con\u00e7u pour Kubernetes. La stack Quarkus comprend : JPA\/Hibernate, JAX-RS\/RESTEasy, Eclipse Vert.x, Netty, Apache Camel, Kafka, Prometheus et d'autres.<\/p>\n<p><\/p>\n<p>L'objectif de sa cr\u00e9ation est de faire de Java la plateforme leader pour le d\u00e9ploiement sur Kubernetes et le d\u00e9veloppement d'applications sans serveur, en fournissant aux d\u00e9veloppeurs une approche unifi\u00e9e pour le d\u00e9veloppement \u00e0 la fois r\u00e9actif et imp\u00e9ratif.<\/p>\n<p><\/p>\n<p>Si l'on regarde la <noindex><a rel=\"nofollow\" href=\"https:\/\/dzone.com\/articles\/classification-of-development-frameworks-for-enter\"><u>cet<\/u><\/a><\/noindex> la classification des frameworks, Quarkus se situe entre \u00ab Agr\u00e9gateurs \/ G\u00e9n\u00e9rateurs de code \u00bb et \u00ab Frameworks fullstack de haut niveau \u00bb. C'est d\u00e9j\u00e0 plus qu'un agr\u00e9gateur, mais cela ne correspond pas encore \u00e0 un full-stack, car il est con\u00e7u pour le d\u00e9veloppement backend.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Une tr\u00e8s haute vitesse de d\u00e9marrage de l'application et une faible consommation de m\u00e9moire sont promises. Voici les donn\u00e9es du site des d\u00e9veloppeurs :<\/p>\n<p><\/p>\n<p>Temps entre le d\u00e9marrage et la premi\u00e8re r\u00e9ponse (s) :<\/p>\n<p><\/p>\n<p>Configuration<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>Stack Cloud Native Traditionnel*<br \/>\n4.3<br \/>\n9.5<\/p>\n<p><\/p>\n<p>Consommation m\u00e9moire (Mo) :<\/p>\n<p><\/p>\n<p>Configuration<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>Stack Cloud Native Traditionnel*<br \/>\n140<br \/>\n218<\/p>\n<p><\/p>\n<p>Impressionnant, n'est-ce pas ?<\/p>\n<p><\/p>\n<p>*<em>Je n'ai pas trouv\u00e9 d'informations sur ce stack technologique, on peut supposer qu'il s'agit de Spring Boot avec un peu plus de compl\u00e9ments.<\/em>.<\/p>\n<p><\/p>\n<h3 id=\"hello-world\">Hello World!<\/h3>\n<p><\/p>\n<p>La plus simple des applications \u00e9crites en Quarkus ressemblera \u00e0 cela :<\/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>C'est litt\u00e9ralement une seule classe et c'est suffisant ! Vous pouvez lancer l'application avec Maven en mode d\u00e9veloppement :<\/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 diff\u00e9rence avec une application habituelle \u2014 il n'y a pas de classe Application ! Quarkus prend en charge le hot reload, ce qui permet de modifier l'application sans la red\u00e9marrer, rendant ainsi le d\u00e9veloppement encore plus rapide. <\/p>\n<p><\/p>\n<p>Et ensuite ? Vous pouvez ajouter un service au contr\u00f4leur avec l'annotation <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/inject\/\" class=\"user_link\">Inject<\/a><\/noindex>. Le code du service :<\/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>Contr\u00f4leur :<\/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>Notez que dans Quarkus, les annotations standards des frameworks familiers \u2014 CDI et JAX-RS \u2014 sont utilis\u00e9es. Rien de nouveau \u00e0 apprendre si vous avez d\u00e9j\u00e0 travaill\u00e9 avec CDI et JAX-RS, bien s\u00fbr. <\/p>\n<p><\/p>\n<h3 id=\"rabota-s-bazoy-dannyh\">Travailler avec une base de donn\u00e9es<\/h3>\n<p><\/p>\n<p>Hibernate et les annotations JPA standard sont utilis\u00e9s pour les entit\u00e9s. Comme pour les contr\u00f4leurs REST, il est n\u00e9cessaire d'\u00e9crire un minimum de code. Il suffit de sp\u00e9cifier les d\u00e9pendances dans le fichier de build et de disposer les annotations. <code>@Entity<\/code> et de configurer le datasource dans application.properties. <\/p>\n<p><\/p>\n<p>C'est tout. Aucun sessionFactory, persistence.xml ou autre fichier de service. Nous \u00e9crivons uniquement le code n\u00e9cessaire. Cependant, si n\u00e9cessaire, il est possible de cr\u00e9er un fichier persistence.xml et de configurer plus finement la couche ORM. <\/p>\n<p><\/p>\n<p>Quarkus prend en charge la mise en cache des entit\u00e9s, des collections pour les relations un-\u00e0-plusieurs, ainsi que des requ\u00eates. \u00c0 premi\u00e8re vue, cela semble formidable, mais c'est <em>le<\/em> cache local, pour un seul n\u0153ud Kubernetes. C'est-\u00e0-dire que les caches entre diff\u00e9rents n\u0153uds ne sont pas synchronis\u00e9s. J'esp\u00e8re que c'est temporaire. <\/p>\n<p><\/p>\n<h3 id=\"asinhronnoe-vypolnenie-koda\">Ex\u00e9cution asynchrone du code<\/h3>\n<p><\/p>\n<p>Comme mentionn\u00e9 pr\u00e9c\u00e9demment, Quarkus prend \u00e9galement en charge le style de programmation r\u00e9actif. Le code de l'application pr\u00e9c\u00e9dente peut \u00eatre \u00e9crit d'une autre mani\u00e8re.<\/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>Le code asynchrone peut \u00e9galement \u00eatre transf\u00e9r\u00e9 dans un service, le r\u00e9sultat sera le m\u00eame. <\/p>\n<p><\/p>\n<h3 id=\"testirovanie\">Test<\/h3>\n<p><\/p>\n<p>Les tests pour les applications Quarkus peuvent \u00eatre \u00e9crits avec JUnit4 ou JUnit5. Ci-dessous un exemple de test pour un endpoint, \u00e9crit \u00e0 l'aide de RestAssured, mais il est \u00e9galement possible d'utiliser un autre cadre : <\/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'annotation @QuarkusTest exige que l'application soit lanc\u00e9e avant d'ex\u00e9cuter les tests. Pour le reste, c'est du code familier \u00e0 tous les d\u00e9veloppeurs. <\/p>\n<p><\/p>\n<h3 id=\"platformo-zavisimoe-prilozhenie\">Application d\u00e9pendante de la plateforme<\/h3>\n<p><\/p>\n<p>Comme Quarkus est \u00e9troitement int\u00e9gr\u00e9 \u00e0 GraalVM, il est bien s\u00fbr possible de g\u00e9n\u00e9rer du code d\u00e9pendant de la plateforme. Pour cela, il faut installer GraalVM et indiquer la variable d'environnement GRAALVM_HOME. Ensuite, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/quarkusio\/quarkus-quickstarts\/blob\/fae88eaab10ed4d68ac44e0b8b7416e631b8a6f9\/getting-started-knative\/pom.xml#L105\">d\u00e9finir un profil pour la construction<\/a><\/noindex> et le sp\u00e9cifier lors de la construction de l'application :<\/p>\n<p><\/p>\n<pre><code class=\"java\">mvn package -Pnative<\/code><\/pre>\n<p><\/p>\n<p>Ce qui est int\u00e9ressant, c'est que l'application g\u00e9n\u00e9r\u00e9e peut \u00eatre test\u00e9e. Et c'est important, car l'ex\u00e9cution du code \u00ab natif \u00bb peut diff\u00e9rer de l'ex\u00e9cution sur la JVM. L'annotation @SubstrateTest ex\u00e9cute le code de l'application d\u00e9pendant de la plateforme. La r\u00e9utilisation du code de test existant peut se faire par h\u00e9ritage, et le code pour tester une application d\u00e9pendante de la plateforme ressemblera \u00e0 ceci :<\/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'image g\u00e9n\u00e9r\u00e9e peut \u00eatre empaquet\u00e9e dans Docker et ex\u00e9cut\u00e9e dans Kubernetes ou OpenShift, comme d\u00e9crit en d\u00e9tail dans <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/kubernetes-guide\">des instructions<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"instrumentariy\">Outils<\/h3>\n<p><\/p>\n<p>Le framework Quarkus peut \u00eatre utilis\u00e9 avec Maven et Gradle. Maven est enti\u00e8rement pris en charge, contrairement \u00e0 Gradle. Malheureusement, \u00e0 l'heure actuelle, Gradle ne prend pas en charge la g\u00e9n\u00e9ration de projet vide, des d\u00e9tails sont disponibles sur le site. <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/gradle-tooling.html\">tutoriel<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"rasshireniya\">Extensions<\/h3>\n<p><\/p>\n<p>Quarkus est un framework extensible. Actuellement, il existe environ <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/extensions\/\">40 extensions<\/a><\/noindex>, qui ajoutent diverses fonctionnalit\u00e9s \u2014 du support de <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/extensions\/#migration\">Spring DI container<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/extensions\/#integration\">Apache Camel<\/a><\/noindex> \u00e0 la journalisation et \u00e0 la publication de m\u00e9triques pour les services en cours d'ex\u00e9cution. Une extension existe d\u00e9j\u00e0 pour le support du d\u00e9veloppement d'applications en Kotlin, en plus de Java. <\/p>\n<p><\/p>\n<h2 id=\"zaklyuchenie\">Conclusion<\/h2>\n<p><\/p>\n<p>\u00c0 mon avis, Quarkus est tout \u00e0 fait dans l'air du temps. Le d\u00e9veloppement du code backend devient de plus en plus simple, et ce framework facilite encore plus et acc\u00e9l\u00e8re le d\u00e9veloppement des services, ajoutant un support \u00ab natif \u00bb pour Docker et Kubernetes. Un grand avantage \u2014 le support int\u00e9gr\u00e9 de GraalVM et la g\u00e9n\u00e9ration d'images d\u00e9pendantes de la plateforme, ce qui permet de cr\u00e9er des services \u00e0 r\u00e9ellement d\u00e9marrage rapide et occupant peu d'espace en m\u00e9moire. Cela est tr\u00e8s important \u00e0 notre \u00e9poque o\u00f9 les microservices et l'architecture serverless sont en plein essor.<\/p>\n<p><\/p>\n<p>Site officiel \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/\">quarkus.io<\/a><\/noindex>. Des exemples de projets pour un d\u00e9marrage rapide sont d\u00e9j\u00e0 disponibles sur <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/quarkusio\/quarkus-quickstarts\">GitHub<\/a><\/noindex>.\n<\/p>\n<p>Source : <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\/fr\/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=\"fr_FR\" \/>\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\/fr\/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 subsonique et subatomique. Bref aper\u00e7u du framework | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/quarkus-sverhzvukovaya-subatomnaya-java-kratkij-obzor-frejmvorka","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/74793","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=74793"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/74793\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/74794"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=74793"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=74793"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=74793"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}