{"id":2455,"date":"2014-06-23T18:07:01","date_gmt":"2014-06-23T17:07:01","guid":{"rendered":"http:\/\/blog.fabianpiau.com\/?p=2455"},"modified":"2023-08-09T16:14:47","modified_gmt":"2023-08-09T15:14:47","slug":"api-rest-json-xml-http-uri-what-language-do-you-speak","status":"publish","type":"post","link":"https:\/\/blog.fabianpiau.com\/fr\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/","title":{"rendered":"API, REST, JSON, XML, HTTP, URI&#8230; Vous parlez quelle langue en fait?"},"content":{"rendered":"<p><a class=\"lang\" href=\"https:\/\/blog.fabianpiau.com\/en\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/\" title=\"Read in english\"><strong class=\"labellang\"><span class=\"en\">&nbsp;<\/span>English version available<\/strong><\/a><\/p>\n<p class=\"center\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" title=\"Webservices\" src=\"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/post\/00072\/webservices.png?resize=495%2C372&#038;ssl=1\" alt=\"Webservices\" width=\"495\" height=\"372\" \/><\/p>\n<p>REST (REpresentational State Transfer) est un standard utilis\u00e9 pour l&rsquo;\u00e9laboration de webservices. Un service web comme son nom l&rsquo;indique rend accessible un service via des technologies web. Autrement dit, le syst\u00e8me appelant demande un service au syst\u00e8me appel\u00e9 via le web qui en retour lui fournit une r\u00e9ponse, celle-ci peut \u00eatre n\u00e9gative si l&rsquo;appel\u00e9 ne veut ou ne peut pas honorer le service demand\u00e9. Ce principe d&rsquo;architecture permet \u00e0 des syst\u00e8mes de communiquer entre eux. L&rsquo;int\u00e9r\u00eat est encore plus \u00e9vident pour des syst\u00e8mes h\u00e9t\u00e9rog\u00e8nes qui utilisent des technologies diff\u00e9rentes les rendant incompatibles (en communication \u00ab\u00a0directe\u00a0\u00bb).<\/p>\n<p><br clear=\"none\" \/><\/p>\n<h4>Un standard qui utilise des&#8230; standards<\/h4>\n<p>Avec REST, la communication se base sur des technologies Web et plus exactement sur le protocole HTTP (Hypertext Transfer Protocol) et les <a href=\"https:\/\/blog.fabianpiau.com\/fr\/2013\/10\/02\/the-meaning-of-url-uri-urn\/\" title=\"La signification d'URL, URI et URN\">URI<\/a> utilis\u00e9s par le Web. Les messages sont transmis dans un format standardis\u00e9. Pour l&rsquo;int\u00e9gration des r\u00e9ponses, on utilise g\u00e9n\u00e9ralement le format <a href=\"http:\/\/json.org\/\" target=\"_blank\" title=\"Site officiel de JSON\" rel=\"noopener\">JSON<\/a> (JavaScript Object Notation), plus l\u00e9ger et moins verbeux que le <a href=\"https:\/\/www.w3schools.com\/xml\/default.ASP\" target=\"_blank\" title=\"Site officiel de XML\" rel=\"noopener\">XML<\/a> (eXtensible Markup Language), mais ce dernier peut bien s\u00fbr \u00eatre utilis\u00e9.  <\/p>\n<p>A titre illustratif, voici la repr\u00e9sentation (volontairement simplifi\u00e9e) d&rsquo;un trajet en train:<\/p>\n<p>En JSON:<\/p>\n<pre class=\"brush: css; light: true; title: ; notranslate\" title=\"\">\r\n{\r\n\t&quot;trainNum&quot;: 123456789,\r\n\t&quot;departure&quot;: {\r\n\t\t&quot;station&quot;: &quot;Bruxelles-Central&quot;,\r\n\t\t&quot;time&quot;: &quot;07:28&quot;\r\n\t},\r\n\t&quot;arrival&quot;: {\r\n\t\t&quot;station&quot;: &quot;Li\u00e8ge-Guillemins&quot;,\r\n\t\t&quot;time&quot;: &quot;08:25&quot;\r\n\t}\r\n}\r\n<\/pre>\n<p>Et l&rsquo;\u00e9quivalent en XML:<\/p>\n<pre class=\"brush: xml; light: true; title: ; notranslate\" title=\"\">\r\n&lt;trip&gt;\r\n\t&lt;trainNum&gt;123456789&lt;\/trainNum&gt;\r\n\t&lt;departure&gt;\r\n\t\t&lt;station&gt;Bruxelles-Central&lt;\/station&gt;\r\n\t\t&lt;time&gt;07:28&lt;\/time&gt;\r\n\t&lt;\/departure&gt;\r\n\t&lt;arrival&gt;\r\n\t\t&lt;station&gt;Li\u00e8ge-Guillemins&lt;\/station&gt;\r\n\t\t&lt;time&gt;08:25&lt;\/time&gt;\r\n\t&lt;\/arrival&gt;\r\n&lt;\/trip&gt;\r\n<\/pre>\n<p>L&rsquo;interpr\u00e9tation des donn\u00e9es est tr\u00e8s facile tant ces formats de repr\u00e9sentation sont simples \u00e0 lire. La complexit\u00e9 est bien souvent li\u00e9e \u00e0 la donn\u00e9e elle-m\u00eame. Le fait de parler de trajets en train ne pose ici pas de difficult\u00e9s.<\/p>\n<p>A l&rsquo;heure d&rsquo;aujourd&rsquo;hui, les webservice de type REST se d\u00e9mocratisent rapidement, cela pour plusieurs raisons:<\/p>\n<ul>\n<li>La simplicit\u00e9 \u00e9vidente<\/li>\n<li>L&rsquo;utilisation du protocole HTTP dont les qualit\u00e9s ne sont plus \u00e0 d\u00e9montrer. Le protocole actuel est en version 1.1, datant de 1999 (avant m\u00eame IE6). En informatique, on peut dire que c&rsquo;est tr\u00e8s vieux&#8230;<\/li>\n<li>Les syst\u00e8mes sont de plus en plus modulaires, le besoin d&rsquo;interaction et de communication ne cesse de grandir.<\/li>\n<\/ul>\n<p><br clear=\"none\" \/><\/p>\n<h4>Et dans la \u00ab\u00a0vraie\u00a0\u00bb vie alors? C&rsquo;est utile REST et les webservices?<\/h4>\n<p>Eh oui! Vous l&rsquo;utilisez m\u00eame peut-\u00eatre tous les jours sans y pr\u00eater attention. Par exemple, le fait que vous vous connectez \u00e0 une application via votre compte Facebook implique l&rsquo;appel \u00e0 un webservice. L&rsquo;application tierce interroge Facebook pour savoir si vous l&rsquo;avez autoris\u00e9 ou non \u00e0 acc\u00e9der \u00e0 vos informations (adresse email, nom, liste d&rsquo;amis ou autres), le cas \u00e9ch\u00e9ant, elle fournit ces informations \u00e0 l&rsquo;application. Cet \u00e9change vous permet alors de vous authentifier \u00e0 l&rsquo;application tierce. Un tel m\u00e9canisme d&rsquo;authentification\/cr\u00e9ation de compte est de plus en plus utilis\u00e9, car:<\/p>\n<ul>\n<li>Beaucoup de personnes sont sur les r\u00e9seaux sociaux (Twitter, Facebook, Google+)<\/li>\n<li>Cela \u00e9vite d&rsquo;avoir \u00e0 cr\u00e9er un nouveau compte (et donc de fournir un \u00e9ni\u00e8me mot de passe).<\/li>\n<\/ul>\n<p>Par contre, il devient important de bien s\u00e9curiser son compte social, car si celui-ci est pirat\u00e9, tous vos comptes associ\u00e9s deviennent vuln\u00e9rables. A ce propos, n&rsquo;h\u00e9sitez pas \u00e0 lire ou relire l&rsquo;article <a href=\"https:\/\/blog.fabianpiau.com\/fr\/fr\/2013\/11\/01\/some-basic-rules-to-prevent-your-accounts-from-getting-hacked\/\" title=\"Quelques r\u00e8gles essentielles pour \u00e9viter de se faire pirater ses comptes\">\u00ab\u00a0Quelques r\u00e8gles essentielles pour \u00e9viter de se faire pirater ses comptes\u00a0\u00bb<\/a>.<\/p>\n<p><br clear=\"none\" \/><\/p>\n<h4>Techniquement, comment cela se passe-t-il?<\/h4>\n<p>L&rsquo;appel \u00e0 un webservice se fait via un appel HTTP standard et on re\u00e7oit une r\u00e9ponse tout aussi standard. Au niveau de la requ\u00eate (demande de service), cela peut \u00eatre un GET (pour r\u00e9cup\u00e9rer des donn\u00e9es en lecture seule), un POST (pour soumettre des donn\u00e9es dans le but d&rsquo;une modification), la <a href=\"http:\/\/www.w3.org\/Protocols\/rfc2616\/rfc2616-sec9.html\" target=\"_blank\" title=\"Liste des verbes HTTP\" rel=\"noopener\">liste compl\u00e8te des verbes HTTP est ici<\/a>. La r\u00e9ponse d\u00e9pendra de la requ\u00eate et des donn\u00e9es fournies, cela peut \u00eatre la fameuse r\u00e9ponse 404 pour indiquer que le contenu est introuvable, un code 403 dans le cas o\u00f9 vous n&rsquo;avez pas les droits d&rsquo;acc\u00e8s\/modification n\u00e9cessaires, vous trouverez la <a href=\"http:\/\/www.w3.org\/Protocols\/rfc2616\/rfc2616-sec10.html\" target=\"_blank\" title=\"Liste des codes retour HTTP\" rel=\"noopener\">liste compl\u00e8te des codes de retour ici<\/a>. Bien \u00e9videmment, il ne faut pas oublier le code 200 qui indique que tout s&rsquo;est bien pass\u00e9 (statut OK), avec potentiellement une r\u00e9ponse au format XML\/JSON.<\/p>\n<p>La mise en place d&rsquo;un webservice doit suivre des bonnes pratiques. Voici des exemples de ce qu&rsquo;il ne faut pas faire:<\/p>\n<ul>\n<li>Utilisation d&rsquo;une requ\u00eate de type POST pour r\u00e9cup\u00e9rer des donn\u00e9es alors qu&rsquo;un GET aurait \u00e9t\u00e9 plus appropri\u00e9 (car on ne modifie pas l&rsquo;\u00e9tat des donn\u00e9es)<\/li>\n<li>Renvoi d&rsquo;une valeur vide (null) avec un code 200 alors que les codes 204 ou 404 sont justement pr\u00e9vus pour cela.<\/li>\n<\/ul>\n<p>Aussi, il est tr\u00e8s important que tous les appels soient idempotents, c&rsquo;est \u00e0 dire, dans le cas o\u00f9 on envoie plusieurs fois la m\u00eame requ\u00eate, la r\u00e9ponse doit \u00eatre consistante. Par exemple :<\/p>\n<ul>\n<li>Je fais un POST pour modifier des donn\u00e9es, je re\u00e7ois un retour 200 comme quoi la donn\u00e9e a \u00e9t\u00e9 modifi\u00e9e<\/li>\n<li>Si je refais le m\u00eame POST, je dois recevoir un code 304 comme quoi la donn\u00e9e n&rsquo;a pas \u00e9t\u00e9 modifi\u00e9e.<\/li>\n<\/ul>\n<p>Cela ne doit jamais poser de probl\u00e8me de faire plusieurs fois un m\u00eame appel, il faut veiller \u00e0 ce que cela soit g\u00e9r\u00e9 par le syst\u00e8me et qu&rsquo;il n&rsquo;y ait pas d&rsquo;effet de bord.<\/p>\n<p><br clear=\"none\" \/><\/p>\n<h4>Parlons API<\/h4>\n<p>Jusqu&rsquo;\u00e0 maintenant, nous avons vu que les webservices permettent \u00e0 des syst\u00e8mes existants de communiquer entre eux, mais ce n&rsquo;est pas le seul cas d&rsquo;utilisation. Les d\u00e9veloppeurs peuvent aussi s&rsquo;appuyer sur des webservices mis \u00e0 leur disposition pour d\u00e9velopper de nouvelles fonctionnalit\u00e9s ou m\u00eame une application tierce. Dans ce cas, on parle d&rsquo;API: Application Programming Interface (Interface de programmation).<\/p>\n<p>Pour continuer sur l&rsquo;exemple des r\u00e9seaux sociaux, prenons l&rsquo;API de Twitter. Twitter met \u00e0 disposition un ensemble de m\u00e9thodes bas\u00e9es sur REST qui permettent de r\u00e9cup\u00e9rer et manipuler les tweets. Il y a beaucoup de services disponibles, vous pouvez consulter la <a href=\"https:\/\/developer.twitter.com\/docs\" target=\"_blank\" title=\"Liste compl\u00e8te des webservices Twitter\" rel=\"noopener\">liste compl\u00e8te des webservices Twitter ici<\/a>.<\/p>\n<p>Utilisons un webservice de Twitter qui se base sur un GET. Les requ\u00eates de type GET sont les plus simples \u00e0 tester, car un simple clic du navigateur permet de cr\u00e9er et envoyer la requ\u00eate. L&rsquo;URL suivante permet de faire un GET pour obtenir la liste des tweets fran\u00e7ais qui concerne la coupe du monde de cette ann\u00e9e.<\/p>\n<ul>\n<li><code><a href=\"https:\/\/api.twitter.com\/1.1\/search\/tweets.json?q=worldcup2014&#038;lang=fr\" target=\"_blank\" title=\"Requ\u00eate de type GET vers Twitter\" rel=\"noopener\">https:\/\/api.twitter.com\/1.1\/search\/tweets.json?q=worldcup2014&lang=fr<\/a><\/code><\/li>\n<\/ul>\n<p>En fait, vous verrez que la r\u00e9ponse ne contient aucun tweets et contient un message d&rsquo;erreur. Il faut aussi ajouter les informations d&rsquo;authentifications \u00e0 la requ\u00eate, le simple clic finalement ne suffit pas. En effet, les API sont naturellement prot\u00e9g\u00e9es et demandent d&rsquo;\u00eatre enregistr\u00e9 avant de pouvoir \u00eatre utilis\u00e9es. Bref, vous avez compris le principe et aussi re\u00e7u une r\u00e9ponse en JSON de la part de Twitter (m\u00eame si c&rsquo;est un refus&#8230;).<\/p>\n<p>Nous avons principalement parl\u00e9 de l&rsquo;API de Twitter, mais il y a des milliers de webservice et API disponibles. L&rsquo;<a href=\"https:\/\/developers.google.com\/maps\/documentation\/\" target=\"_blank\" title=\"API de Google Maps\" rel=\"noopener\">API de Google Maps<\/a> permet au d\u00e9velopeur d&rsquo;int\u00e9grer des cartes personnalis\u00e9es, cette ouverture est sans doute un des ingr\u00e9dients qui ont permis un tel succ\u00e8s. En effet, beaucoup d&rsquo;applications et de sites internet se basent sur les donn\u00e9es cartographiques de Google pour proposer de nouveaux services, \u00e0 noter aussi qu&rsquo;un <a href=\"https:\/\/mapsplatform.google.com\/\" target=\"_blank\" title=\"Google Maps API pour les entreprises\" rel=\"noopener\">v\u00e9ritable business plan est propos\u00e9 par la firme<\/a>.<\/p>\n<p>Enfin, si vous \u00eates curieux, vous pouvez faire un tour sur <a href=\"https:\/\/www.mulesoft.com\/programmableweb\" target=\"_blank\" title=\"ProgrammableWeb\" rel=\"noopener\">ProgrammableWeb<\/a>, un site collaboratif qui r\u00e9f\u00e9rence beaucoup d&rsquo;API.<\/p>","protected":false},"excerpt":{"rendered":"<p>&nbsp;English version available REST (REpresentational State Transfer) est un standard utilis\u00e9 pour l&rsquo;\u00e9laboration de webservices. Un service web comme son nom l&rsquo;indique rend accessible un service via des technologies web. Autrement dit, le syst\u00e8me appelant demande un service au syst\u00e8me appel\u00e9 via le web qui en retour lui fournit une r\u00e9ponse, celle-ci peut \u00eatre n\u00e9gative [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2460,"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,248,250,246,217,216,218,251,249],"class_list":["post-2455","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agile-programming","tag-api","tag-http","tag-json","tag-rest","tag-uri","tag-url","tag-urn","tag-webservice","tag-xml"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>API, REST, JSON, XML, HTTP, URI... Vous parlez quelle langue en fait? | CarmaBlog<\/title>\n<meta name=\"description\" content=\"&nbsp;English version available REST (REpresentational State Transfer) est un standard utilis\u00e9 pour l&#039;\u00e9laboration de webservices. Un service web comme son\" \/>\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\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"API, REST, JSON, XML, HTTP, URI... Vous parlez quelle langue en fait? | CarmaBlog\" \/>\n<meta property=\"og:description\" content=\"&nbsp;English version available REST (REpresentational State Transfer) est un standard utilis\u00e9 pour l&#039;\u00e9laboration de webservices. Un service web comme son\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.fabianpiau.com\/fr\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/\" \/>\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-06-23T17:07:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-09T15:14:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.fabianpiau.com\/wp-content\/uploads\/2014\/06\/webservices-miniature.png\" \/>\n\t<meta property=\"og:image:width\" content=\"500\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\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=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2014\\\/06\\\/23\\\/api-rest-json-xml-http-uri-what-language-do-you-speak\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2014\\\/06\\\/23\\\/api-rest-json-xml-http-uri-what-language-do-you-speak\\\/\"},\"author\":{\"name\":\"Fabian Piau\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/#\\\/schema\\\/person\\\/c5cbffd7cf0b10117877f5dfd1b35f14\"},\"headline\":\"API, REST, JSON, XML, HTTP, URI&#8230; Vous parlez quelle langue en fait?\",\"datePublished\":\"2014-06-23T17:07:01+00:00\",\"dateModified\":\"2023-08-09T15:14:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2014\\\/06\\\/23\\\/api-rest-json-xml-http-uri-what-language-do-you-speak\\\/\"},\"wordCount\":2483,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/#\\\/schema\\\/person\\\/c5cbffd7cf0b10117877f5dfd1b35f14\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2014\\\/06\\\/23\\\/api-rest-json-xml-http-uri-what-language-do-you-speak\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2014\\\/06\\\/webservices-miniature.png?fit=500%2C500&ssl=1\",\"keywords\":[\"api\",\"http\",\"json\",\"rest\",\"uri\",\"url\",\"urn\",\"webservice\",\"xml\"],\"articleSection\":[\"Programmation agile\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.fabianpiau.com\\\/2014\\\/06\\\/23\\\/api-rest-json-xml-http-uri-what-language-do-you-speak\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/2014\\\/06\\\/23\\\/api-rest-json-xml-http-uri-what-language-do-you-speak\\\/\",\"url\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/2014\\\/06\\\/23\\\/api-rest-json-xml-http-uri-what-language-do-you-speak\\\/\",\"name\":\"API, REST, JSON, XML, HTTP, URI... Vous parlez quelle langue en fait? | CarmaBlog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/2014\\\/06\\\/23\\\/api-rest-json-xml-http-uri-what-language-do-you-speak\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2014\\\/06\\\/23\\\/api-rest-json-xml-http-uri-what-language-do-you-speak\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2014\\\/06\\\/webservices-miniature.png?fit=500%2C500&ssl=1\",\"datePublished\":\"2014-06-23T17:07:01+00:00\",\"dateModified\":\"2023-08-09T15:14:47+00:00\",\"description\":\"&nbsp;English version available REST (REpresentational State Transfer) est un standard utilis\u00e9 pour l'\u00e9laboration de webservices. Un service web comme son\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/2014\\\/06\\\/23\\\/api-rest-json-xml-http-uri-what-language-do-you-speak\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[[\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/2014\\\/06\\\/23\\\/api-rest-json-xml-http-uri-what-language-do-you-speak\\\/\"]]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/2014\\\/06\\\/23\\\/api-rest-json-xml-http-uri-what-language-do-you-speak\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2014\\\/06\\\/webservices-miniature.png?fit=500%2C500&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2014\\\/06\\\/webservices-miniature.png?fit=500%2C500&ssl=1\",\"width\":500,\"height\":500,\"caption\":\"webservices\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/fr\\\/2014\\\/06\\\/23\\\/api-rest-json-xml-http-uri-what-language-do-you-speak\\\/#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\":\"API, REST, JSON, XML, HTTP, URI&#8230; What language do you speak?\"}]},{\"@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":"API, REST, JSON, XML, HTTP, URI... Vous parlez quelle langue en fait? | CarmaBlog","description":"&nbsp;English version available REST (REpresentational State Transfer) est un standard utilis\u00e9 pour l'\u00e9laboration de webservices. Un service web comme son","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\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/","og_locale":"fr_FR","og_type":"article","og_title":"API, REST, JSON, XML, HTTP, URI... Vous parlez quelle langue en fait? | CarmaBlog","og_description":"&nbsp;English version available REST (REpresentational State Transfer) est un standard utilis\u00e9 pour l'\u00e9laboration de webservices. Un service web comme son","og_url":"https:\/\/blog.fabianpiau.com\/fr\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/","og_site_name":"CarmaBlog","article_publisher":"https:\/\/www.facebook.com\/fabian.piau","article_author":"https:\/\/www.facebook.com\/fabian.piau","article_published_time":"2014-06-23T17:07:01+00:00","article_modified_time":"2023-08-09T15:14:47+00:00","og_image":[{"width":500,"height":500,"url":"https:\/\/blog.fabianpiau.com\/wp-content\/uploads\/2014\/06\/webservices-miniature.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":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.fabianpiau.com\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/#article","isPartOf":{"@id":"https:\/\/blog.fabianpiau.com\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/"},"author":{"name":"Fabian Piau","@id":"https:\/\/blog.fabianpiau.com\/#\/schema\/person\/c5cbffd7cf0b10117877f5dfd1b35f14"},"headline":"API, REST, JSON, XML, HTTP, URI&#8230; Vous parlez quelle langue en fait?","datePublished":"2014-06-23T17:07:01+00:00","dateModified":"2023-08-09T15:14:47+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.fabianpiau.com\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/"},"wordCount":2483,"commentCount":0,"publisher":{"@id":"https:\/\/blog.fabianpiau.com\/#\/schema\/person\/c5cbffd7cf0b10117877f5dfd1b35f14"},"image":{"@id":"https:\/\/blog.fabianpiau.com\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2014\/06\/webservices-miniature.png?fit=500%2C500&ssl=1","keywords":["api","http","json","rest","uri","url","urn","webservice","xml"],"articleSection":["Programmation agile"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.fabianpiau.com\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.fabianpiau.com\/fr\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/","url":"https:\/\/blog.fabianpiau.com\/fr\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/","name":"API, REST, JSON, XML, HTTP, URI... Vous parlez quelle langue en fait? | CarmaBlog","isPartOf":{"@id":"https:\/\/blog.fabianpiau.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.fabianpiau.com\/fr\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/#primaryimage"},"image":{"@id":"https:\/\/blog.fabianpiau.com\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2014\/06\/webservices-miniature.png?fit=500%2C500&ssl=1","datePublished":"2014-06-23T17:07:01+00:00","dateModified":"2023-08-09T15:14:47+00:00","description":"&nbsp;English version available REST (REpresentational State Transfer) est un standard utilis\u00e9 pour l'\u00e9laboration de webservices. Un service web comme son","breadcrumb":{"@id":"https:\/\/blog.fabianpiau.com\/fr\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":[["https:\/\/blog.fabianpiau.com\/fr\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/"]]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/blog.fabianpiau.com\/fr\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/#primaryimage","url":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2014\/06\/webservices-miniature.png?fit=500%2C500&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2014\/06\/webservices-miniature.png?fit=500%2C500&ssl=1","width":500,"height":500,"caption":"webservices"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.fabianpiau.com\/fr\/2014\/06\/23\/api-rest-json-xml-http-uri-what-language-do-you-speak\/#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":"API, REST, JSON, XML, HTTP, URI&#8230; What language do you speak?"}]},{"@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":14127,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2014\/06\/webservices-miniature.png?fit=500%2C500&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pbSHyl-DB","_links":{"self":[{"href":"https:\/\/blog.fabianpiau.com\/fr\/wp-json\/wp\/v2\/posts\/2455","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=2455"}],"version-history":[{"count":0,"href":"https:\/\/blog.fabianpiau.com\/fr\/wp-json\/wp\/v2\/posts\/2455\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/fr\/wp-json\/wp\/v2\/media\/2460"}],"wp:attachment":[{"href":"https:\/\/blog.fabianpiau.com\/fr\/wp-json\/wp\/v2\/media?parent=2455"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/fr\/wp-json\/wp\/v2\/categories?post=2455"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/fr\/wp-json\/wp\/v2\/tags?post=2455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}