{"id":2508,"date":"2014-07-02T19:06:38","date_gmt":"2014-07-02T18:06:38","guid":{"rendered":"http:\/\/blog.fabianpiau.com\/?p=2508"},"modified":"2022-01-05T15:10:34","modified_gmt":"2022-01-05T15:10:34","slug":"doing-some-social-rest-with-hateoas","status":"publish","type":"post","link":"https:\/\/blog.fabianpiau.com\/fr\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/","title":{"rendered":"Faire du REST social avec HATEOAS"},"content":{"rendered":"<p><a class=\"lang\" href=\"https:\/\/blog.fabianpiau.com\/en\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/\" title=\"Read in english\"><strong class=\"labellang\"><span class=\"en\">&nbsp;<\/span>English version available<\/strong><\/a><\/p>\n<p>L&rsquo;article \u00ab\u00a0<a href=\"https:\/\/blog.fabianpiau.com\/fr\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/\" title=\"API, REST, JSON, XML, HTTP, URI\u2026 Vous parlez quelle langue en fait?\">API, REST, JSON, XML, HTTP, URI&#8230; Vous parlez quelle langue en fait?<\/a>\u00a0\u00bb exposait quelques principes sur les webservices et les technologies associ\u00e9es, en particulier REST. Maintenant que vous \u00eates incollable sur le sujet, continuons un peu et introduisons HATEOAS. Bien que le nom soit un peu barbare, il n&rsquo;y a aucun rapport avec un quelconque personnage du seigneur des anneaux!<\/p>\n<p>Reprenons l&rsquo;exemple du trajet en train du premier article. Notez que tous les exemples qui suivent sont en JSON, mais l&rsquo;utilisation du XML est tout \u00e0 fait possible.<\/p>\n<pre class=\"brush: css; light: true; title: ; notranslate\" title=\"\">\r\n{\r\n  &quot;trainNum&quot;: 123456789,\r\n  &quot;departure&quot;: {&quot;station&quot;: &quot;Bruxelles-Central&quot;, &quot;time&quot;: &quot;07:28&quot;},\r\n  &quot;arrival&quot;: {&quot;station&quot;: &quot;Li\u00e8ge-Guillemins&quot;, &quot;time&quot;: &quot;08:25&quot;}\r\n}\r\n<\/pre>\n<p>Ce message d\u00e9crit un trajet en train en donnant diverses informations telles que le num\u00e9ro du train, les gares de d\u00e9part et d&rsquo;arriv\u00e9e et les horaires. Par contre, il n&rsquo;y a aucune information li\u00e9e au contexte. En se basant uniquement sur le contenu de ce message, on ne peut pas deviner sa provenance ou le moyen pour obtenir davantage d&rsquo;informations (sur le trajet, le train, etc.). C&rsquo;est le moment o\u00f9 notre cher compagnon HATEOAS intervient.<\/p>\n<p class=\"center\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" title=\"REST social\" src=\"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/post\/00073\/social-rest.png?resize=300%2C229&#038;ssl=1\" alt=\"REST social\" width=\"300\" height=\"229\" \/><\/p>\n<p>HATEOAS est l&rsquo;acronyme de Hypermedia as the Engine of Application State. Tout de suite, c&rsquo;est plus clair! Non? Ok, moi non plus. Concr\u00e8tement, c&rsquo;est un moyen d&rsquo;ajouter des informations contextuelles \u00e0 un message. On parle de la \u00ab\u00a0contrainte\u00a0\u00bb HATEOAS sur REST car le but est que ces donn\u00e9es ajout\u00e9es respectent un format bien d\u00e9fini et universel. Ce standard (comme tous les autres) est indispensable afin d&rsquo;\u00e9viter que chacun cr\u00e9e son propre format maison et que cela devienne sp\u00e9cifique par API. On perdrait alors en int\u00e9r\u00eat et en compr\u00e9hension.<\/p>\n<p>Dans le cas de mon trajet, il serait int\u00e9ressant d&rsquo;avoir les coordonn\u00e9es du train suivant et pr\u00e9c\u00e9dent. Pour obtenir ce lien entre les trajets et respecter la contrainte HATEOAS, le message devient:<\/p>\n<pre class=\"brush: css; light: true; title: ; notranslate\" title=\"\">\r\n{\r\n  &quot;numTrain&quot;: 123456789,\r\n  &quot;departure&quot;: {&quot;station&quot;: &quot;Bruxelles-Central&quot;, &quot;time&quot;: &quot;07:28&quot;},\r\n  &quot;arrival&quot;: {&quot;station&quot;: &quot;Li\u00e8ge-Guillemins&quot;, &quot;time&quot;: &quot;08:23&quot;},\r\n  &quot;_links&quot;: {\r\n    &quot;self&quot;: {\r\n      &quot;href&quot;: &quot;http:\/\/www.triptrain.com\/displayTrip?numTrain=123456789&amp;departureStation=Bruxelles-Central&amp;departureTime=07:28&quot;\r\n    },\r\n    &quot;nextTrain&quot;: {\r\n      &quot;href&quot;: &quot;http:\/\/www.triptrain.com\/displayTrip?numTrain=987654321&amp;departureStation=Bruxelles-Central&amp;departureTime=08:01&quot;\r\n    },\r\n    &quot;previousTrain&quot;: {\r\n      &quot;href&quot;: &quot;http:\/\/www.triptrain.com\/displayTrip?numTrain=147258369&amp;departureStation=Bruxelles-Central&amp;departureTime=07:01&quot;\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p>Le bloc de donn\u00e9es existant reste inchang\u00e9 et un bloc de liens a fait son apparition. Les webservices en REST peuvent donc \u00eatre adapt\u00e9s sans avoir besoin de toucher \u00e0 l&rsquo;existant, le risque de r\u00e9gression est ainsi minimis\u00e9.<\/p>\n<p>Le message a maintenant un sens beaucoup plus fonctionnel. A partir d&rsquo;un trajet, je suis capable de passer au suivant ou au pr\u00e9c\u00e9dent. Je dois avouer que l&rsquo;exemple est peut-\u00eatre un peu limit\u00e9, mais imaginez le principe dans d&rsquo;autres contextes.<\/p>\n<p>D&rsquo;une certaine mani\u00e8re, l&rsquo;API s&rsquo;auto-d\u00e9couvre et le message s&rsquo;auto-d\u00e9crit. La r\u00e9ponse \u00e0 une requ\u00eate permet d&rsquo;en faire une autre sans forc\u00e9ment connaitre \u00e0 l&rsquo;avance toutes les m\u00e9thodes disponibles sur l&rsquo;API. HATEOAS am\u00e9liore grandement la lisibilit\u00e9 de vos API, mais l&rsquo;int\u00e9r\u00eat devient r\u00e9el lorsque les consommateurs du webservice utilisent ces nouvelles informations.<\/p>\n<p>Il y a cependant un revers \u00e0 la m\u00e9daille: HATEOAS est relativement jeune et la sp\u00e9cification n&rsquo;est pas clairement d\u00e9finie. D&rsquo;ailleurs o\u00f9 est-elle? D&rsquo;autres personnes se sont <a href=\"https:\/\/stackoverflow.com\/questions\/13377350\/hateoas-rel-any-standards-yet\" title=\"HATEOAS - Any Standards Yet?\" target=\"_blank\" rel=\"noopener noreferrer\">pos\u00e9 cette question<\/a>, il semblerait que vous pouvez la trouver ici: <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/draft-kelly-json-hal-06\" title=\"HAL - Hypertext Application Language specification\" target=\"_blank\" rel=\"noopener noreferrer\">HAL &#8211; Hypertext Application Language specification<\/a>. Il y a aussi <a href=\"https:\/\/stateless.group\/hal_specification.html\" title=\"HAL - Hypertext Application Language\" target=\"_blank\" rel=\"noopener noreferrer\">cette page bien plus lisible<\/a> et sur laquelle vous trouverez plusieurs liens int\u00e9ressants dans la partie \u00ab\u00a0Quick links\u00a0\u00bb. Je vous conseille leur lecture si vous souhaitez approfondir le sujet.<\/p>","protected":false},"excerpt":{"rendered":"<p>&nbsp;English version available L&rsquo;article \u00ab\u00a0API, REST, JSON, XML, HTTP, URI&#8230; Vous parlez quelle langue en fait?\u00a0\u00bb exposait quelques principes sur les webservices et les technologies associ\u00e9es, en particulier REST. Maintenant que vous \u00eates incollable sur le sujet, continuons un peu et introduisons HATEOAS. Bien que le nom soit un peu barbare, il n&rsquo;y a aucun [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2512,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[247,252,250,246,251],"class_list":["post-2508","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agile-programming","tag-api","tag-hateoas","tag-json","tag-rest","tag-webservice"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Faire du REST social avec HATEOAS | CarmaBlog<\/title>\n<meta name=\"description\" content=\"&nbsp;English version available L&#039;article &quot;API, REST, JSON, XML, HTTP, URI... Vous parlez quelle langue en fait?&quot; exposait quelques principes sur les\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.fabianpiau.com\/fr\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Faire du REST social avec HATEOAS | CarmaBlog\" \/>\n<meta property=\"og:description\" content=\"&nbsp;English version available L&#039;article &quot;API, REST, JSON, XML, HTTP, URI... Vous parlez quelle langue en fait?&quot; exposait quelques principes sur les\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.fabianpiau.com\/fr\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/\" \/>\n<meta property=\"og:site_name\" content=\"CarmaBlog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/fabian.piau\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/fabian.piau\" \/>\n<meta property=\"article:published_time\" content=\"2014-07-02T18:06:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-05T15:10:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.fabianpiau.com\/wp-content\/uploads\/2014\/07\/people-linked.png\" \/>\n\t<meta property=\"og:image:width\" content=\"300\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Fabian Piau\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@fabianpiau\" \/>\n<meta name=\"twitter:site\" content=\"@fabianpiau\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fabian Piau\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/\"},\"author\":{\"name\":\"Fabian Piau\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/#\\\/schema\\\/person\\\/c5cbffd7cf0b10117877f5dfd1b35f14\"},\"headline\":\"Faire du REST social avec HATEOAS\",\"datePublished\":\"2014-07-02T18:06:38+00:00\",\"dateModified\":\"2022-01-05T15:10:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/\"},\"wordCount\":1317,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/#\\\/schema\\\/person\\\/c5cbffd7cf0b10117877f5dfd1b35f14\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2014\\\/07\\\/people-linked.png?fit=300%2C300&ssl=1\",\"keywords\":[\"api\",\"HATEOAS\",\"json\",\"rest\",\"webservice\"],\"articleSection\":[\"Programmation agile\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.fabianpiau.com\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/\",\"url\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/\",\"name\":\"Faire du REST social avec HATEOAS | CarmaBlog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2014\\\/07\\\/people-linked.png?fit=300%2C300&ssl=1\",\"datePublished\":\"2014-07-02T18:06:38+00:00\",\"dateModified\":\"2022-01-05T15:10:34+00:00\",\"description\":\"&nbsp;English version available L'article \\\"API, REST, JSON, XML, HTTP, URI... Vous parlez quelle langue en fait?\\\" exposait quelques principes sur les\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[[\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/\"]]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2014\\\/07\\\/people-linked.png?fit=300%2C300&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2014\\\/07\\\/people-linked.png?fit=300%2C300&ssl=1\",\"width\":300,\"height\":300,\"caption\":\"people-linked\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Homepage\",\"item\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programmation agile\",\"item\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/category\\\/agile-programming\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Doing some social REST with HATEOAS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/\",\"name\":\"CarmaBlog\",\"description\":\"Agilit\u00e9, D\u00e9veloppement Java, Nouvelles technologies et plus...\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/#\\\/schema\\\/person\\\/c5cbffd7cf0b10117877f5dfd1b35f14\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/#\\\/schema\\\/person\\\/c5cbffd7cf0b10117877f5dfd1b35f14\",\"name\":\"Fabian Piau\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/fabian-pro-small.jpg?fit=567%2C667&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/fabian-pro-small.jpg?fit=567%2C667&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/fabian-pro-small.jpg?fit=567%2C667&ssl=1\",\"width\":567,\"height\":667,\"caption\":\"Fabian Piau\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/fabian-pro-small.jpg?fit=567%2C667&ssl=1\"},\"description\":\"D\u00e9veloppeur Java, Fabian s'int\u00e9resse aux nouvelles technologies et plus particuli\u00e8rement \u00e0 leur utilisation dans un contexte agile.\",\"sameAs\":[\"https:\\\/\\\/blog.fabianpiau.com\",\"https:\\\/\\\/www.facebook.com\\\/fabian.piau\",\"https:\\\/\\\/www.instagram.com\\\/fabianpiau\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/fabianpiau\\\/\",\"https:\\\/\\\/x.com\\\/fabianpiau\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Faire du REST social avec HATEOAS | CarmaBlog","description":"&nbsp;English version available L'article \"API, REST, JSON, XML, HTTP, URI... Vous parlez quelle langue en fait?\" exposait quelques principes sur les","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.fabianpiau.com\/fr\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/","og_locale":"fr_FR","og_type":"article","og_title":"Faire du REST social avec HATEOAS | CarmaBlog","og_description":"&nbsp;English version available L'article \"API, REST, JSON, XML, HTTP, URI... Vous parlez quelle langue en fait?\" exposait quelques principes sur les","og_url":"https:\/\/blog.fabianpiau.com\/fr\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/","og_site_name":"CarmaBlog","article_publisher":"https:\/\/www.facebook.com\/fabian.piau","article_author":"https:\/\/www.facebook.com\/fabian.piau","article_published_time":"2014-07-02T18:06:38+00:00","article_modified_time":"2022-01-05T15:10:34+00:00","og_image":[{"width":300,"height":300,"url":"https:\/\/blog.fabianpiau.com\/wp-content\/uploads\/2014\/07\/people-linked.png","type":"image\/png"}],"author":"Fabian Piau","twitter_card":"summary_large_image","twitter_creator":"@fabianpiau","twitter_site":"@fabianpiau","twitter_misc":{"\u00c9crit par":"Fabian Piau","Dur\u00e9e de lecture estim\u00e9e":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.fabianpiau.com\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/#article","isPartOf":{"@id":"https:\/\/blog.fabianpiau.com\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/"},"author":{"name":"Fabian Piau","@id":"https:\/\/blog.fabianpiau.com\/#\/schema\/person\/c5cbffd7cf0b10117877f5dfd1b35f14"},"headline":"Faire du REST social avec HATEOAS","datePublished":"2014-07-02T18:06:38+00:00","dateModified":"2022-01-05T15:10:34+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.fabianpiau.com\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/"},"wordCount":1317,"commentCount":2,"publisher":{"@id":"https:\/\/blog.fabianpiau.com\/#\/schema\/person\/c5cbffd7cf0b10117877f5dfd1b35f14"},"image":{"@id":"https:\/\/blog.fabianpiau.com\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2014\/07\/people-linked.png?fit=300%2C300&ssl=1","keywords":["api","HATEOAS","json","rest","webservice"],"articleSection":["Programmation agile"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.fabianpiau.com\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.fabianpiau.com\/fr\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/","url":"https:\/\/blog.fabianpiau.com\/fr\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/","name":"Faire du REST social avec HATEOAS | CarmaBlog","isPartOf":{"@id":"https:\/\/blog.fabianpiau.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.fabianpiau.com\/fr\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/#primaryimage"},"image":{"@id":"https:\/\/blog.fabianpiau.com\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2014\/07\/people-linked.png?fit=300%2C300&ssl=1","datePublished":"2014-07-02T18:06:38+00:00","dateModified":"2022-01-05T15:10:34+00:00","description":"&nbsp;English version available L'article \"API, REST, JSON, XML, HTTP, URI... Vous parlez quelle langue en fait?\" exposait quelques principes sur les","breadcrumb":{"@id":"https:\/\/blog.fabianpiau.com\/fr\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":[["https:\/\/blog.fabianpiau.com\/fr\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/"]]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/blog.fabianpiau.com\/fr\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/#primaryimage","url":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2014\/07\/people-linked.png?fit=300%2C300&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2014\/07\/people-linked.png?fit=300%2C300&ssl=1","width":300,"height":300,"caption":"people-linked"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.fabianpiau.com\/fr\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Homepage","item":"https:\/\/blog.fabianpiau.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Programmation agile","item":"https:\/\/blog.fabianpiau.com\/fr\/category\/agile-programming\/"},{"@type":"ListItem","position":3,"name":"Doing some social REST with HATEOAS"}]},{"@type":"WebSite","@id":"https:\/\/blog.fabianpiau.com\/fr\/#website","url":"https:\/\/blog.fabianpiau.com\/fr\/","name":"CarmaBlog","description":"Agilit\u00e9, D\u00e9veloppement Java, Nouvelles technologies et plus...","publisher":{"@id":"https:\/\/blog.fabianpiau.com\/fr\/#\/schema\/person\/c5cbffd7cf0b10117877f5dfd1b35f14"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.fabianpiau.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":["Person","Organization"],"@id":"https:\/\/blog.fabianpiau.com\/fr\/#\/schema\/person\/c5cbffd7cf0b10117877f5dfd1b35f14","name":"Fabian Piau","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2022\/08\/fabian-pro-small.jpg?fit=567%2C667&ssl=1","url":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2022\/08\/fabian-pro-small.jpg?fit=567%2C667&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2022\/08\/fabian-pro-small.jpg?fit=567%2C667&ssl=1","width":567,"height":667,"caption":"Fabian Piau"},"logo":{"@id":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2022\/08\/fabian-pro-small.jpg?fit=567%2C667&ssl=1"},"description":"D\u00e9veloppeur Java, Fabian s'int\u00e9resse aux nouvelles technologies et plus particuli\u00e8rement \u00e0 leur utilisation dans un contexte agile.","sameAs":["https:\/\/blog.fabianpiau.com","https:\/\/www.facebook.com\/fabian.piau","https:\/\/www.instagram.com\/fabianpiau\/","https:\/\/www.linkedin.com\/in\/fabianpiau\/","https:\/\/x.com\/fabianpiau"]}]}},"views":2503,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2014\/07\/people-linked.png?fit=300%2C300&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pbSHyl-Es","_links":{"self":[{"href":"https:\/\/blog.fabianpiau.com\/fr\/wp-json\/wp\/v2\/posts\/2508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.fabianpiau.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.fabianpiau.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/fr\/wp-json\/wp\/v2\/comments?post=2508"}],"version-history":[{"count":0,"href":"https:\/\/blog.fabianpiau.com\/fr\/wp-json\/wp\/v2\/posts\/2508\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/fr\/wp-json\/wp\/v2\/media\/2512"}],"wp:attachment":[{"href":"https:\/\/blog.fabianpiau.com\/fr\/wp-json\/wp\/v2\/media?parent=2508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/fr\/wp-json\/wp\/v2\/categories?post=2508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/fr\/wp-json\/wp\/v2\/tags?post=2508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}