{"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\/en\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/","title":{"rendered":"Doing some social REST with HATEOAS"},"content":{"rendered":"<p><a class=\"lang\" href=\"https:\/\/blog.fabianpiau.com\/fr\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/\" title=\"Lire en fran\u00e7ais\"><strong class=\"labellang\"><span class=\"fr\">&nbsp;<\/span>Version fran\u00e7aise disponible<\/strong><\/a><\/p>\n<p>The article &#8220;<a href=\"https:\/\/blog.fabianpiau.com\/en\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/\" title = \"API, REST, JSON, XML, HTTP, URI... What language do you speak?\">API, REST, JSON, XML, HTTP, URI&#8230; What language do you speak?<\/a>&#8221; gave some explanations on web services and their related technologies, REST in particular. Let&#8217;s assume that you master this topic now, so we can continue our journey and introduce HATEOAS. Although the name sounds a bit barbaric, there is no relation to any character from Lord of the Rings!<\/p>\n<p>We can reuse our example about travelling by train. Note that we are using the JSON format, but you can use XML as well.<\/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>This message describes a trip by giving various information such as the train number, departure and arrival stations and the schedule. But there is no information related to the context. Based on the message content, there is no way to know the origin of the data or how to get extra information (on the trip, the train, etc.). This is time for our fellow HATEOAS to help us.<\/p>\n<p class=\"center\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" title=\"Social REST\" src=\"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/post\/00073\/social-rest.png?resize=300%2C229&#038;ssl=1\" alt=\"Social REST\" width=\"300\" height=\"229\" \/><\/p>\n<p>HATEOAS stands for Hypermedia as the Engine of Application State. You should see clearly now! Don&#8217;t you? Ok&#8230; Let&#8217;s put it simply, it is a way to add contextual information to a message. When talking about HATEOAS for REST, we often use the term &#8220;constraint&#8221; because that extra data must follow a pre-defined and universal format. This standard (like all others) is essential to avoid that everyone creates their own proprietary format, so that they become API specific.<\/p>\n<p>In the case of our trip, it could be interesting to add the coordinates of the previous and next trains. To add such links between the trains and respect the HATEOAS constraint, the message becomes:<\/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>The existing data remains unchanged and a block of links has been added. REST web services can be adapted without having too much impact on the existing code, so regression is minimized.<\/p>\n<p>The message has a much more functional sense; from a trip, we can jump to the next or previous one. I have to admit that this example is quite limited, but imagine applying this principle in other contexts.<\/p>\n<p>By providing self-described message, the API is somehow easily discoverable. The response enables to make another request without necessarily knowing in advance all the methods available on the API. HATEOAS greatly improves the readability of your API, but the interest is real when the consumers of the web services are using this added information.<\/p>\n<p>However there is a downside: HATEOAS is relatively young and the specification is not clearly defined. Besides, where can we find it? Other people already <a href=\"https:\/\/stackoverflow.com\/questions\/13377350\/hateoas-rel-any-standards-yet\" title=\"HATEOAS - Any Standards Yet?\" target=\"_blank\" rel=\"noopener noreferrer\">asked this question earlier<\/a>, it seems you can find it here: <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>. There is also <a href=\"https:\/\/stateless.group\/hal_specification.html\" title=\"HAL - Hypertext Application Language\" target=\"_blank\" rel=\"noopener noreferrer\">this page much more easy to read<\/a> which also gives you an interesting materials list (in the &#8220;Quick links&#8221; section), I would definitely recommend it for further reading.<\/p>","protected":false},"excerpt":{"rendered":"<p>&nbsp;Version fran\u00e7aise disponible The article &#8220;API, REST, JSON, XML, HTTP, URI&#8230; What language do you speak?&#8221; gave some explanations on web services and their related technologies, REST in particular. Let&#8217;s assume that you master this topic now, so we can continue our journey and introduce HATEOAS. Although the name sounds a bit barbaric, there is [&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>Doing some social REST with 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\/en\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Doing some social REST with 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\/en\/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=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fabian Piau\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\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\":\"Doing some social REST with 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\":[\"Agile programming\"],\"inLanguage\":\"en-US\",\"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\\\/en\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/\",\"url\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/\",\"name\":\"Doing some social REST with HATEOAS | CarmaBlog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/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\\\/en\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[[\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/\"]]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/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\\\/en\\\/2014\\\/07\\\/02\\\/doing-some-social-rest-with-hateoas\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Homepage\",\"item\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programmation agile\",\"item\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/category\\\/agile-programming\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Doing some social REST with HATEOAS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/\",\"name\":\"CarmaBlog\",\"description\":\"Agility, Java programming, New technologies and more...\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/#\\\/schema\\\/person\\\/c5cbffd7cf0b10117877f5dfd1b35f14\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/#\\\/schema\\\/person\\\/c5cbffd7cf0b10117877f5dfd1b35f14\",\"name\":\"Fabian Piau\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@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\":\"Java developer, Fabian is interested in new technologies and their use within an Agile environment.\",\"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":"Doing some social REST with 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\/en\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/","og_locale":"en_US","og_type":"article","og_title":"Doing some social REST with 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\/en\/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":{"Written by":"Fabian Piau","Est. reading time":"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":"Doing some social REST with 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":["Agile programming"],"inLanguage":"en-US","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\/en\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/","url":"https:\/\/blog.fabianpiau.com\/en\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/","name":"Doing some social REST with HATEOAS | CarmaBlog","isPartOf":{"@id":"https:\/\/blog.fabianpiau.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.fabianpiau.com\/en\/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\/en\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":[["https:\/\/blog.fabianpiau.com\/en\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/"]]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.fabianpiau.com\/en\/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\/en\/2014\/07\/02\/doing-some-social-rest-with-hateoas\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Homepage","item":"https:\/\/blog.fabianpiau.com\/en\/"},{"@type":"ListItem","position":2,"name":"Programmation agile","item":"https:\/\/blog.fabianpiau.com\/en\/category\/agile-programming\/"},{"@type":"ListItem","position":3,"name":"Doing some social REST with HATEOAS"}]},{"@type":"WebSite","@id":"https:\/\/blog.fabianpiau.com\/en\/#website","url":"https:\/\/blog.fabianpiau.com\/en\/","name":"CarmaBlog","description":"Agility, Java programming, New technologies and more...","publisher":{"@id":"https:\/\/blog.fabianpiau.com\/en\/#\/schema\/person\/c5cbffd7cf0b10117877f5dfd1b35f14"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.fabianpiau.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/blog.fabianpiau.com\/en\/#\/schema\/person\/c5cbffd7cf0b10117877f5dfd1b35f14","name":"Fabian Piau","image":{"@type":"ImageObject","inLanguage":"en-US","@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":"Java developer, Fabian is interested in new technologies and their use within an Agile environment.","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":2499,"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\/en\/wp-json\/wp\/v2\/posts\/2508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/comments?post=2508"}],"version-history":[{"count":0,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/posts\/2508\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/media\/2512"}],"wp:attachment":[{"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/media?parent=2508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/categories?post=2508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/tags?post=2508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}