{"id":698,"date":"2017-11-18T15:34:11","date_gmt":"2017-11-18T14:34:11","guid":{"rendered":"https:\/\/www.lagencebleu.com\/gaelcorna\/?p=698"},"modified":"2017-12-20T11:30:45","modified_gmt":"2017-12-20T10:30:45","slug":"theme-wordpress-ionic-2-8-provider-principal","status":"publish","type":"post","link":"https:\/\/www.lagencebleu.com\/gaelcorna\/single\/698\/theme-wordpress-ionic-2-8-provider-principal","title":{"rendered":"Un th\u00e8me WordPress en Ionic 2\/8 &#8211; le provider principal"},"content":{"rendered":"<h3>Un provider pour r\u00e9cup\u00e9rer les posts<\/h3>\n<p>Apr\u00e8s g\u00e9n\u00e9ration automatique du provider par ionic, on obtient ce fichier la :<\/p>\n<p><code class=\"hljs typescript\">import { Http } from &#039;@angular\/http&#039;;<br \/>\nimport { Injectable } from &#039;@angular\/core&#039;;<br \/>\n\/*<br \/>\n&nbsp;&nbsp;Generated class for the TestProvider provider.<br \/>\nSee https:\/\/angular.io\/guide\/dependency-injection for more info on providers<br \/>\nand Angular DI.<br \/>\n*\/<br \/>\n@Injectable()<br \/>\nexport class TestProvider {<br \/>\n&nbsp;&nbsp;constructor( public http:Http ) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;console.log(&#039;Hello TestProvider Provider&#039;);<br \/>\n&nbsp;&nbsp;}<br \/>\n}<br \/>\n<\/code><\/p>\n<p>Commen\u00e7ons par effacer le contenu du constructeur qui restera vide puis ajoutons les d\u00e9pendances n\u00e9cessaires au fonctionnement du provider. Dans la partie HTTP, nous aurons besoin de l&rsquo;interface <em>Response<\/em> qui formatera, comme son nom l&rsquo;indique, la r\u00e9ponse \u00e0 notre requ\u00eate REST. Comme cette requ\u00eate est asynchrone, il nous faudra aussi l&rsquo;interface <em>Observable<\/em> situ\u00e9e dans RXjs ainsi qu&rsquo;un op\u00e9rateur <em>map<\/em> qui permettra d&rsquo;avoir une r\u00e9ponse format\u00e9e comme on le souhaite.  Cela nous donne donc :<\/p>\n<p><code class=\"hljs typescript\">import { Injectable } from &#039;@angular\/core&#039;;<br \/>\nimport { Http, Response } from &#039;@angular\/http&#039;;<br \/>\nimport { Observable } from &#039;rxjs\/Observable&#039;;<br \/>\nimport &#039;rxjs\/add\/operator\/map&#039;;<br \/>\nimport { ConfigProvider } from &#039;..\/..\/providers\/config\/config&#039;;<br \/>\n\/*<br \/>\n&nbsp;&nbsp;Generated class for the PostProvider provider.<br \/>\n*\/<br \/>\n@Injectable()<br \/>\nexport class PostsProvider {<br \/>\n&nbsp;&nbsp;constructor( public http: Http ) {}<br \/>\n}<br \/>\n<\/code><\/p>\n<p>Le but de ce provider est de r\u00e9cup\u00e9rer des posts donc nous allons aussi d\u00e9finir ici la forme qu&rsquo;ils doivent avoir c&rsquo;est \u00e0 dire l&rsquo;interface qu&rsquo;ils doivent impl\u00e9menter.<\/p>\n<p>L&rsquo;interface se d\u00e9finit tr\u00e8s simplement par le mot cl\u00e9 <em>Interface<\/em>, voyez plut\u00f4t : <\/p>\n<p><code class=\"hljs typescript\">interface Post {<br \/>\n&nbsp;&nbsp;title: {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;rendered: string<br \/>\n&nbsp;&nbsp;},<br \/>\n&nbsp;&nbsp;excerpt: {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;rendered: string<br \/>\n&nbsp;&nbsp;},<br \/>\n&nbsp;&nbsp;content: {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;rendered: string<br \/>\n&nbsp;&nbsp;},<br \/>\n&nbsp;&nbsp;categories: {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;0: number<br \/>\n&nbsp;&nbsp;},<br \/>\n&nbsp;&nbsp;date: string,<br \/>\n&nbsp;&nbsp;data: {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;status: number<br \/>\n&nbsp;&nbsp;}<br \/>\n}<br \/>\n<\/code><\/p>\n<p>Ce code se placera avant notre d\u00e9claration de classe afin de pouvoir utiliser le type Post dedans.<\/p>\n<p>Pour r\u00e9cup\u00e9rer nos posts, nous aurons besoin de deux m\u00e9thodes, l&rsquo;une donnera la liste des posts et l&rsquo;autre un post en particulier. Commen\u00e7ons par la liste des posts<\/p>\n<h3>La premi\u00e8re m\u00e9thode<\/h3>\n<p>Afin d&rsquo;avoir un peu de latitude dans la liste de posts, on va int\u00e9grer deux param\u00e8tres \u00e0 notre requ\u00eate. Le premier est le param\u00e8tre Page qui va nous permettre de paginer nos r\u00e9sultats pour \u00e9viter d&rsquo;avoir une liste de posts interminable. Par d\u00e9faut le nombre de posts par page est limit\u00e9 \u00e0 10, nous le limiterons \u00e0 8 pour une question de mise en page.<\/p>\n<p>Le deuxi\u00e8me param\u00e8tre est la cat\u00e9gorie du post afin de filtrer nos r\u00e9sultats et de n&rsquo;afficher que ceux correspondant \u00e0 la cat\u00e9gorie Blog par exemple. On pourra ensuite dans chaque page choisir la cat\u00e9gorie qui convient, ou pas. Si une cat\u00e9gorie en particulier n&rsquo;est pas pr\u00e9cis\u00e9e, on affichera tout sauf les cat\u00e9gories exclues par le param\u00e8tre <em>categories_exclude<\/em>. Voila donc le code de cette m\u00e9thode :<\/p>\n<p><code class=\"hljs typescript\">getPosts( page, cat ): Observable&lt;Post[]&gt; {<br \/>\n&nbsp;&nbsp;let ext: string = &quot;?per_page=8&quot;;<br \/>\n&nbsp;&nbsp;if(cat != &#039;&#039;){<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;cat = &#039;&amp;categories=&#039; + cat;<br \/>\n&nbsp;&nbsp;}else{<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;cat = &#039;&amp;categories_exclude=&#039; + this.config.excludeCats;<br \/>\n&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;if(page &gt; 1){&lt;br \/&gt;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;ext = ext + &#039;&amp;page=&#039; + page + cat;<br \/>\n&nbsp;&nbsp;}else{<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;ext = ext + cat;<br \/>\n&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;return this.http<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;.get(this.config.baseUrl + this.config.postUrl + ext)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;.map((res: Response) =&gt; res.json());<br \/>\n}<br \/>\n<\/code><\/p>\n<p>Dans la premi\u00e8re partie, on filtre les cat\u00e9gories puis dans la deuxi\u00e8me on cr\u00e9\u00e9 la requ\u00eate HTTP avec la m\u00e9thode <em>GET<\/em> et on mappe le r\u00e9sultat de type <em>Response<\/em>.<\/p>\n<p>J&rsquo;ai volontairement laiss\u00e9 la gestion des cat\u00e9gories et la pagination sous la forme <em>if&#8230;else<\/em> mais vous pouvez la reformuler sous la forme d&rsquo;op\u00e9rateurs ternaires ce qui rendra le code plus concis.<\/p>\n<h3>Le provider de configuration<\/h3>\n<p>Comme vous le voyez \u00e0 certains endroits, certaine variables sont apport\u00e9es par un objet <em>config<\/em>. Il s&rsquo;agit du provider que nous avons cr\u00e9\u00e9 pr\u00e9c\u00e9demment qui va contenir toutes les valeurs de configuration comme les URLs de base pour les requ\u00eates HTTP, les cat\u00e9gories \u00e0 exclure etc.<\/p>\n<p>Voici le code du provider de configuration :<\/p>\n<p><code class=\"hljs typescript\">import { Injectable } from &#039;@angular\/core&#039;;<br \/>\n\/*<br \/>\n&nbsp;&nbsp;Generated class for the ConfigProvider provider.<br \/>\n*\/<br \/>\n@Injectable()<br \/>\nexport class ConfigProvider {<br \/>\n&nbsp;&nbsp;constructor() {}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;baseUrl: string = &#039;https:\/\/www.monsite.fr\/wp-json\/wp\/v2\/&#039;;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;postUrl: string = &#039;posts\/&#039;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;comUrl: string  = &#039;comments&#039;;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;mediaUrl: string = &quot;https:\/\/www.monsite.fr\/img\/&quot;;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;excludeCats: Array&lt;number&gt; = [11,12];<br \/>\n}<br \/>\n<\/code><\/p>\n<p>En ce qui concerne les cat\u00e9gories \u00e0 exclure, c&rsquo;est \u00e0 vous d&rsquo;indiquer leur ID dans le tableau <em>excludeCats<\/em>. Pour le reste il vous suffit d&rsquo;indiquer l&rsquo;Url de votre site et le dossier dans lequel vous stockez les images de votre th\u00e8me dans <em>mediaUrl<\/em><\/p>\n<p>Passons maintenant, apr\u00e8s cette digression, \u00e0 la deuxi\u00e8me m\u00e9thode de notre classe <em>PostsProvider<\/em>, celle qui r\u00e9cup\u00e8re un post en particulier.<\/p>\n<h3>La deuxi\u00e8me m\u00e9thode<\/h3>\n<p>Le code sera encore plus simple puisqu&rsquo;il n&rsquo;y aura pas de param\u00e8tres \u00e0 traiter :<\/p>\n<p><code class=\"hljs typescript\">getPost( id, postType ): Observable&lt;any&gt; {<br \/>\n&nbsp;&nbsp;return this.http<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;.get(this.config.baseUrl + postType + &#039;\/&#039; + id)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;.map((res: Response) =&gt; res.json());<br \/>\n}<br \/>\n<\/code><\/p>\n<p>Les param\u00e8tres \u00e0 passer \u00e0 la m\u00e9thode sont l&rsquo;id du post demand\u00e9 et le post-type. Faire une requ\u00eate avec un post-type \u00e0 Post nous renverra un post et \u00e0 Page nous renverra \u00e9videmment une page.<\/p>\n<p>Voila pour le provider principal et pour celui de configuration qui sont assez simples. Nous attaquerons les components dans le prochain article avec le component Post.<\/p>\n<p>N&rsquo;h\u00e9sitez pas \u00e0 poser des questions en commentaires.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voici la deuxi\u00e8me partie de ce tutoriel o\u00f9 je vous montre comment cr\u00e9er un th\u00e8me Wordpress avec Ionic 3. Pour cet article nous allons voir comment fonctionne le provider principal qui se connectera \u00e0 l&rsquo;API REST pour r\u00e9cup\u00e9rer les posts.<\/p>\n","protected":false},"author":3,"featured_media":587,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[6],"tags":[],"class_list":["post-698","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Un th\u00e8me Wordpress en Ionic 2\/8 - le provider principal - Ga\u00ebl Corna<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Un th\u00e8me Wordpress en Ionic 2\/8 - le provider principal - Ga\u00ebl Corna\" \/>\n<meta property=\"og:description\" content=\"Voici la deuxi\u00e8me partie de ce tutoriel o\u00f9 je vous montre comment cr\u00e9er un th\u00e8me Wordpress avec Ionic 3. Pour cet article nous allons voir comment fonctionne le provider principal qui se connectera \u00e0 l&#039;API REST pour r\u00e9cup\u00e9rer les posts.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal\" \/>\n<meta property=\"og:site_name\" content=\"Ga\u00ebl Corna\" \/>\n<meta property=\"article:published_time\" content=\"2017-11-18T14:34:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-12-20T10:30:45+00:00\" \/>\n<meta name=\"author\" content=\"gael\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"gael\" \/>\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\":\"WebPage\",\"@id\":\"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal\",\"url\":\"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal\",\"name\":\"Un th\u00e8me Wordpress en Ionic 2\/8 - le provider principal - Ga\u00ebl Corna\",\"isPartOf\":{\"@id\":\"http:\/\/gaelcorna.eu\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal#primaryimage\"},\"image\":{\"@id\":\"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-content\/uploads\/sites\/2\/2017\/10\/screens.svg\",\"datePublished\":\"2017-11-18T14:34:11+00:00\",\"dateModified\":\"2017-12-20T10:30:45+00:00\",\"author\":{\"@id\":\"http:\/\/gaelcorna.eu\/#\/schema\/person\/5b10e96e843831cd679c134b8f6263e0\"},\"breadcrumb\":{\"@id\":\"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal#primaryimage\",\"url\":\"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-content\/uploads\/sites\/2\/2017\/10\/screens.svg\",\"contentUrl\":\"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-content\/uploads\/sites\/2\/2017\/10\/screens.svg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"http:\/\/gaelcorna.eu\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Un th\u00e8me WordPress en Ionic 2\/8 &#8211; le provider principal\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/gaelcorna.eu\/#website\",\"url\":\"http:\/\/gaelcorna.eu\/\",\"name\":\"Ga\u00ebl Corna\",\"description\":\"D\u00e9veloppeur WEB. Aussi\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/gaelcorna.eu\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"http:\/\/gaelcorna.eu\/#\/schema\/person\/5b10e96e843831cd679c134b8f6263e0\",\"name\":\"gael\",\"url\":\"https:\/\/www.lagencebleu.com\/gaelcorna\/single\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Un th\u00e8me Wordpress en Ionic 2\/8 - le provider principal - Ga\u00ebl Corna","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":"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal","og_locale":"fr_FR","og_type":"article","og_title":"Un th\u00e8me Wordpress en Ionic 2\/8 - le provider principal - Ga\u00ebl Corna","og_description":"Voici la deuxi\u00e8me partie de ce tutoriel o\u00f9 je vous montre comment cr\u00e9er un th\u00e8me Wordpress avec Ionic 3. Pour cet article nous allons voir comment fonctionne le provider principal qui se connectera \u00e0 l'API REST pour r\u00e9cup\u00e9rer les posts.","og_url":"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal","og_site_name":"Ga\u00ebl Corna","article_published_time":"2017-11-18T14:34:11+00:00","article_modified_time":"2017-12-20T10:30:45+00:00","author":"gael","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"gael","Dur\u00e9e de lecture estim\u00e9e":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal","url":"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal","name":"Un th\u00e8me Wordpress en Ionic 2\/8 - le provider principal - Ga\u00ebl Corna","isPartOf":{"@id":"http:\/\/gaelcorna.eu\/#website"},"primaryImageOfPage":{"@id":"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal#primaryimage"},"image":{"@id":"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal#primaryimage"},"thumbnailUrl":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-content\/uploads\/sites\/2\/2017\/10\/screens.svg","datePublished":"2017-11-18T14:34:11+00:00","dateModified":"2017-12-20T10:30:45+00:00","author":{"@id":"http:\/\/gaelcorna.eu\/#\/schema\/person\/5b10e96e843831cd679c134b8f6263e0"},"breadcrumb":{"@id":"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal#primaryimage","url":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-content\/uploads\/sites\/2\/2017\/10\/screens.svg","contentUrl":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-content\/uploads\/sites\/2\/2017\/10\/screens.svg"},{"@type":"BreadcrumbList","@id":"http:\/\/gaelcorna.eu\/single\/698\/theme-wordpress-ionic-2-8-provider-principal#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"http:\/\/gaelcorna.eu\/"},{"@type":"ListItem","position":2,"name":"Un th\u00e8me WordPress en Ionic 2\/8 &#8211; le provider principal"}]},{"@type":"WebSite","@id":"http:\/\/gaelcorna.eu\/#website","url":"http:\/\/gaelcorna.eu\/","name":"Ga\u00ebl Corna","description":"D\u00e9veloppeur WEB. Aussi","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/gaelcorna.eu\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"http:\/\/gaelcorna.eu\/#\/schema\/person\/5b10e96e843831cd679c134b8f6263e0","name":"gael","url":"https:\/\/www.lagencebleu.com\/gaelcorna\/single\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/posts\/698","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/comments?post=698"}],"version-history":[{"count":33,"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/posts\/698\/revisions"}],"predecessor-version":[{"id":764,"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/posts\/698\/revisions\/764"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/media\/587"}],"wp:attachment":[{"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/media?parent=698"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/categories?post=698"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/tags?post=698"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}