{"id":1303,"date":"2016-03-12T10:02:29","date_gmt":"2016-03-12T08:02:29","guid":{"rendered":"http:\/\/www.h-hennes.fr\/blog\/?p=1303"},"modified":"2016-03-18T13:09:07","modified_gmt":"2016-03-18T11:09:07","slug":"prestashop-mise-en-place-webservices","status":"publish","type":"post","link":"https:\/\/www.h-hennes.fr\/blog\/2016\/03\/12\/prestashop-mise-en-place-webservices\/","title":{"rendered":"Prestashop : Mise en place webservices"},"content":{"rendered":"<p>Voici donc le d\u00e9but de notre s\u00e9rie sur les webservices prestashop ( <a href=\"https:\/\/www.h-hennes.fr\/blog\/2016\/03\/06\/prestashop-synchronisez-vos-donnees-avec-les-webservices\/\" target=\"_blank\">Sommaire<\/a> )<\/p>\n<p>Pour cette s\u00e9rie nous allons \u00e9crire les appels au webservice via des scripts php, bas\u00e9 sur la librairie fournie par Prestahop\u00a0 : <a href=\"https:\/\/github.com\/PrestaShop\/PrestaShop-webservice-lib\">https:\/\/github.com\/PrestaShop\/PrestaShop-webservice-lib<\/a><\/p>\n<p>Le projet global est disponible sur github : <a href=\"https:\/\/github.com\/nenes25\/prestashop_hhwebservices\" target=\"_blank\">https:\/\/github.com\/nenes25\/prestashop_hhwebservices<\/a><\/p>\n<p>Pour ce premier article je vais vous d\u00e9tailler le mode de fonctionnement de l&rsquo;import<\/p>\n<p><strong>Structure globale et installation<br \/>\n<\/strong><br \/>\nLa structure du projet sera la suivante :<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1306\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2016\/03\/structure.jpg\" alt=\"Structure projet\" width=\"123\" height=\"193\" \/><\/p>\n<p>Nos classes sp\u00e9cifiques de gestion seront dans le dossier \u00ab\u00a0classes\u00a0\u00bb, et les fichiers d&rsquo;imports dans le dossier \u00ab\u00a0files\/imports\u00a0\u00bb.<br \/>\nL&rsquo;appel des fonctions se fera via le fichier imports.php<\/p>\n<p>Le module utilise composer pour g\u00e9rer les d\u00e9pendances et l&rsquo;autoload des classes, avant toute chose il est donc n\u00e9cessaire d&rsquo;installer le projet via la commande<\/p>\n<pre lang=\"bash\">composer install\r\n<\/pre>\n<p><strong>Gestion des donn\u00e9es de l&rsquo;import<\/strong><\/p>\n<p>Pour faciliter la gestion des donn\u00e9es de l&rsquo;import, l&rsquo;objectif est de r\u00e9cup\u00e9rer l&rsquo;ensemble des donn\u00e9es \u00e0 importer sous la forme d&rsquo;un tableau associatif tel que l&rsquo;exemple ci-dessous<\/p>\n<pre>[0] =&gt; Array\r\n        (\r\n            [email] =&gt; testhh@yopmail.com\r\n            [id_gender] =&gt; 1\r\n            [firstname] =&gt; herve\r\n            [lastname] =&gt; herve\r\n            [birthday] =&gt; 2010-01-20\r\n            [passwd] =&gt; test\r\n            [toDelete] =&gt; 0\r\n        )<\/pre>\n<p>&#8230;<\/p>\n<p>&nbsp;<\/p>\n<p>Les cl\u00e9s du tableau correspondant aux noms des attributs Prestashop des entit\u00e9s.<\/p>\n<p>Pour g\u00e9rer cela j&rsquo;ai donc cr\u00e9\u00e9 une classe HhWsCsvData qui va se charger de parser les fichiers csv pour r\u00e9cup\u00e9rer les donn\u00e9es avec le format attendu.<br \/>\nLe postulat \u00e9tant que la premi\u00e8re ligne du fichier contient les titres des colonnes.<\/p>\n<p>Le code de cette classe est le suivant :<\/p>\n<pre lang=\"php\" escaped=\"true\">&lt;?php\r\n\r\n\/**\r\n\u00a0* Classe de r\u00e9cup\u00e9ration des donn\u00e9es Csv\r\n\u00a0*\r\n\u00a0* @author hhennes &lt;contact@h-hennes.fr&gt;\r\n\u00a0*\/\r\nclass HhWsCsvData extends HhWsData {\r\n\r\n\u00a0\u00a0\u00a0 \/**\r\n\u00a0\u00a0\u00a0\u00a0 * R\u00e9cup\u00e9ration des donn\u00e9es du fichier csv\r\n\u00a0\u00a0\u00a0\u00a0 * @param string $fileDir\r\n\u00a0\u00a0\u00a0\u00a0 * @param string $fileName\r\n\u00a0\u00a0\u00a0\u00a0 * @param boolean $useCache\r\n\u00a0\u00a0\u00a0\u00a0 *\/\r\n\u00a0\u00a0\u00a0 public function getDatas($fileDir, $fileName, $useCache = true) {\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/Cl\u00e9 de cache\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $cache_key = str_replace('\/', '_', $fileDir) . $fileName;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/Si du cache existe on renvoie le r\u00e9sultat du cache\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (array_key_exists($cache_key, $this-&gt;_datas) &amp;&amp; $useCache) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return $this-&gt;_datas[$cache_key];\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/Ouverture du fichier\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $csvFile = fopen($fileDir . $fileName . '.csv', 'r');\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $keys = array();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $csvDatas = array();\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $i = 0;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 while ($row = fgetcsv($csvFile, 1000, \";\", '\"')) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/Gestion des ent\u00eates\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if ($i == 0) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 foreach ($row as $datas) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $keys[] = $datas;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 } else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $j = 0;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $rowDatas = array();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 foreach ($row as $datas) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $rowDatas[$keys[$j]] = $datas;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $j++;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $csvDatas[] = $rowDatas;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $i++;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/Mise en cache des donn\u00e9es\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $this-&gt;_datas[$cache_key] = $csvDatas;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/Renvoi des donn\u00e9es\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return $this-&gt;_datas[$cache_key];\r\n\u00a0\u00a0\u00a0 }\r\n\r\n}\r\n<\/pre>\n<p>Si vous avez des donn\u00e9es d&rsquo;entr\u00e9e sous un autre format, vous pouvez cr\u00e9er votre propre adapteur qui h\u00e9ritera de la classe HhWsData.<\/p>\n<p><strong>Surcharge du Webservice Prestashop, mis en place de fonctions g\u00e9n\u00e9riques.<\/strong><\/p>\n<p>Au cours de notre travail sur les diff\u00e9rentes entit\u00e9s prestashop, certaines actions vont \u00eatre redondantes, c&rsquo;est pourquoi nous allons cr\u00e9er une classe avec des m\u00e9thodes g\u00e9n\u00e9riques.<\/p>\n<p>Cette classe h\u00e9ritera de la classe de base du webservice prestashop, et c&rsquo;est celle-ci que nous appellerons directement.<br \/>\nVoici son contenu :<\/p>\n<pre lang=\"php\" escaped=\"true\"> &lt;?php\r\n\r\ninclude_once dirname(__FILE__) . '\/..\/vendor\/prestashop\/prestashop-webservice-lib\/PSWebServiceLibrary.php';\r\n\r\n\/**\r\n\u00a0* Gestion des webservices Prestashop\r\n\u00a0*\r\n\u00a0* @author hhennes &lt;contact@h-hennes.fr&gt;\r\n\u00a0*\/\r\nclass HhPrestashopWebservice extends PrestaShopWebservice {\r\n\r\n\u00a0\u00a0\u00a0 \/** Nom de la resource, \u00e0 sucharger par les classe qui h\u00e9ritent *\/\r\n\u00a0\u00a0\u00a0 protected $_resource;\r\n\r\n\u00a0\u00a0\u00a0 \/**\r\n\u00a0\u00a0\u00a0\u00a0 * R\u00e9cup\u00e9ration de l'identifiant d'un objet via ses param\u00e8tres\r\n\u00a0\u00a0\u00a0\u00a0 * @return int $objectId || bool \r\n\u00a0\u00a0\u00a0\u00a0 *\/\r\n\u00a0\u00a0\u00a0 public function getObjectId($value, $field = 'id') {\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $options = array(\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'resource' =&gt; $this-&gt;_resource,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'filter' =&gt; array($field =&gt; $value)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 );\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $xml = $this-&gt;get($options);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $objectId = (string) $xml-&gt;children()-&gt;children()-&gt;attributes();\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if ($objectId != '')\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return $objectId;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return false;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0 \/**\r\n\u00a0\u00a0\u00a0\u00a0 * R\u00e9cup\u00e9ration d'un objet vide\r\n\u00a0\u00a0\u00a0\u00a0 * @return SimpleXml\r\n\u00a0\u00a0\u00a0\u00a0 *\/\r\n\u00a0\u00a0\u00a0 public function getEmptyObject() {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $options = array(\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'url' =&gt; $this-&gt;url.'\/api\/'.$this-&gt;_resource.'\/?schema=synopsis'\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $schema = $this-&gt;get($options);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return $schema;\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0 \/**\r\n\u00a0\u00a0\u00a0\u00a0 * Suppression d'un objet\r\n\u00a0\u00a0\u00a0\u00a0 * @param type $resource\r\n\u00a0\u00a0\u00a0\u00a0 * @param type $id\r\n\u00a0\u00a0\u00a0\u00a0 *\/\r\n\u00a0\u00a0\u00a0 public function deleteObject($resource,$id) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $options = array(\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'resource' =&gt; $resource,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'id' =&gt; $id,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $this-&gt;delete($options);\r\n\u00a0\u00a0\u00a0 }\r\n\r\n}\r\n<\/pre>\n<p><strong>Le fichier d&rsquo;import<\/strong><\/p>\n<p>Pour finir nous allons \u00e9crire la base de notre fichier imports.php qui sera charg\u00e9 de r\u00e9aliser l&rsquo;import.<\/p>\n<pre lang=\"php\" escaped=\"true\"> &lt;?php \r\n\/\/Inclusion de l'autoload composer\r\ninclude_once 'vendor\/autoload.php';\r\n\r\n\/\/Identifiants d'acc\u00e8s au webservice\r\n$wsUrl = 'http:\/\/www.yourshop.com';\r\n$wsAuthKey = 'yourKey';\r\n\r\n\/\/Initialisation du webservice avec notre classe sp\u00e9cifique\r\n$ws = new HhPrestashopWebservice($wsUrl,$wsAuthKey, false);\r\n\r\n\/\/Instanciation de la classe de r\u00e9cup\u00e9ration des donn\u00e9es csv\r\n$csv = new HhWsCsvData();\r\n<\/pre>\n<p>Nous arrivons au bout de la pr\u00e9paration de l&rsquo;utilisation des webservices.<br \/>\nDans le prochain article nous verrons ensemble comment mettre cette m\u00e9thodologie en \u0153uvre avec la gestion des clients.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voici donc le d\u00e9but de notre s\u00e9rie sur les webservices prestashop ( Sommaire ) Pour cette s\u00e9rie nous allons \u00e9crire les appels au webservice via des scripts php, bas\u00e9 sur la librairie fournie par Prestahop\u00a0 : https:\/\/github.com\/PrestaShop\/PrestaShop-webservice-lib Le projet global est disponible sur github : https:\/\/github.com\/nenes25\/prestashop_hhwebservices Pour ce premier article je vais vous d\u00e9tailler le [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[245],"tags":[104,425],"class_list":["post-1303","post","type-post","status-publish","format-standard","hentry","category-prestashop-2","tag-prestashop","tag-webservices"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Gestion des webservices prestashop, mise en place d&#039;un socle technique\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"herve\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.h-hennes.fr\/blog\/2016\/03\/12\/prestashop-mise-en-place-webservices\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2016\\\/03\\\/12\\\/prestashop-mise-en-place-webservices\\\/#article\",\"name\":\"Prestashop : Mise en place webservices | Herv\\u00e9 Hennes\",\"headline\":\"Prestashop : Mise en place webservices\",\"author\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/author\\\/herve\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/03\\\/structure.jpg\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2016\\\/03\\\/12\\\/prestashop-mise-en-place-webservices\\\/#articleImage\",\"width\":123,\"height\":193,\"caption\":\"Structure projet\"},\"datePublished\":\"2016-03-12T10:02:29+02:00\",\"dateModified\":\"2016-03-18T13:09:07+02:00\",\"inLanguage\":\"fr-FR\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2016\\\/03\\\/12\\\/prestashop-mise-en-place-webservices\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2016\\\/03\\\/12\\\/prestashop-mise-en-place-webservices\\\/#webpage\"},\"articleSection\":\"Prestashop, prestashop, webservices\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2016\\\/03\\\/12\\\/prestashop-mise-en-place-webservices\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/category\\\/prestashop-2\\\/#listItem\",\"name\":\"Prestashop\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/category\\\/prestashop-2\\\/#listItem\",\"position\":2,\"name\":\"Prestashop\",\"item\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/category\\\/prestashop-2\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2016\\\/03\\\/12\\\/prestashop-mise-en-place-webservices\\\/#listItem\",\"name\":\"Prestashop : Mise en place webservices\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2016\\\/03\\\/12\\\/prestashop-mise-en-place-webservices\\\/#listItem\",\"position\":3,\"name\":\"Prestashop : Mise en place webservices\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/category\\\/prestashop-2\\\/#listItem\",\"name\":\"Prestashop\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/#organization\",\"name\":\"Herv\\u00e9 Hennes\",\"description\":\"D\\u00e9veloppeur e-commerce\",\"url\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/author\\\/herve\\\/#author\",\"url\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/author\\\/herve\\\/\",\"name\":\"herve\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2016\\\/03\\\/12\\\/prestashop-mise-en-place-webservices\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/248532c833c69e304668cc20fd20ec6ddc1808306f57d5d14e632059f50347a4?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"herve\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2016\\\/03\\\/12\\\/prestashop-mise-en-place-webservices\\\/#webpage\",\"url\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2016\\\/03\\\/12\\\/prestashop-mise-en-place-webservices\\\/\",\"name\":\"Prestashop : Mise en place webservices | Herv\\u00e9 Hennes\",\"description\":\"Gestion des webservices prestashop, mise en place d'un socle technique\",\"inLanguage\":\"fr-FR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2016\\\/03\\\/12\\\/prestashop-mise-en-place-webservices\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/author\\\/herve\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/author\\\/herve\\\/#author\"},\"datePublished\":\"2016-03-12T10:02:29+02:00\",\"dateModified\":\"2016-03-18T13:09:07+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/\",\"name\":\"Herv\\u00e9 Hennes\",\"description\":\"D\\u00e9veloppeur e-commerce\",\"inLanguage\":\"fr-FR\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Prestashop : Mise en place webservices | Herv\u00e9 Hennes","description":"Gestion des webservices prestashop, mise en place d'un socle technique","canonical_url":"https:\/\/www.h-hennes.fr\/blog\/2016\/03\/12\/prestashop-mise-en-place-webservices\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.h-hennes.fr\/blog\/2016\/03\/12\/prestashop-mise-en-place-webservices\/#article","name":"Prestashop : Mise en place webservices | Herv\u00e9 Hennes","headline":"Prestashop : Mise en place webservices","author":{"@id":"https:\/\/www.h-hennes.fr\/blog\/author\/herve\/#author"},"publisher":{"@id":"https:\/\/www.h-hennes.fr\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2016\/03\/structure.jpg","@id":"https:\/\/www.h-hennes.fr\/blog\/2016\/03\/12\/prestashop-mise-en-place-webservices\/#articleImage","width":123,"height":193,"caption":"Structure projet"},"datePublished":"2016-03-12T10:02:29+02:00","dateModified":"2016-03-18T13:09:07+02:00","inLanguage":"fr-FR","mainEntityOfPage":{"@id":"https:\/\/www.h-hennes.fr\/blog\/2016\/03\/12\/prestashop-mise-en-place-webservices\/#webpage"},"isPartOf":{"@id":"https:\/\/www.h-hennes.fr\/blog\/2016\/03\/12\/prestashop-mise-en-place-webservices\/#webpage"},"articleSection":"Prestashop, prestashop, webservices"},{"@type":"BreadcrumbList","@id":"https:\/\/www.h-hennes.fr\/blog\/2016\/03\/12\/prestashop-mise-en-place-webservices\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.h-hennes.fr\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog\/category\/prestashop-2\/#listItem","name":"Prestashop"}},{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog\/category\/prestashop-2\/#listItem","position":2,"name":"Prestashop","item":"https:\/\/www.h-hennes.fr\/blog\/category\/prestashop-2\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog\/2016\/03\/12\/prestashop-mise-en-place-webservices\/#listItem","name":"Prestashop : Mise en place webservices"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog\/2016\/03\/12\/prestashop-mise-en-place-webservices\/#listItem","position":3,"name":"Prestashop : Mise en place webservices","previousItem":{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog\/category\/prestashop-2\/#listItem","name":"Prestashop"}}]},{"@type":"Organization","@id":"https:\/\/www.h-hennes.fr\/blog\/#organization","name":"Herv\u00e9 Hennes","description":"D\u00e9veloppeur e-commerce","url":"https:\/\/www.h-hennes.fr\/blog\/"},{"@type":"Person","@id":"https:\/\/www.h-hennes.fr\/blog\/author\/herve\/#author","url":"https:\/\/www.h-hennes.fr\/blog\/author\/herve\/","name":"herve","image":{"@type":"ImageObject","@id":"https:\/\/www.h-hennes.fr\/blog\/2016\/03\/12\/prestashop-mise-en-place-webservices\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/248532c833c69e304668cc20fd20ec6ddc1808306f57d5d14e632059f50347a4?s=96&d=mm&r=g","width":96,"height":96,"caption":"herve"}},{"@type":"WebPage","@id":"https:\/\/www.h-hennes.fr\/blog\/2016\/03\/12\/prestashop-mise-en-place-webservices\/#webpage","url":"https:\/\/www.h-hennes.fr\/blog\/2016\/03\/12\/prestashop-mise-en-place-webservices\/","name":"Prestashop : Mise en place webservices | Herv\u00e9 Hennes","description":"Gestion des webservices prestashop, mise en place d'un socle technique","inLanguage":"fr-FR","isPartOf":{"@id":"https:\/\/www.h-hennes.fr\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.h-hennes.fr\/blog\/2016\/03\/12\/prestashop-mise-en-place-webservices\/#breadcrumblist"},"author":{"@id":"https:\/\/www.h-hennes.fr\/blog\/author\/herve\/#author"},"creator":{"@id":"https:\/\/www.h-hennes.fr\/blog\/author\/herve\/#author"},"datePublished":"2016-03-12T10:02:29+02:00","dateModified":"2016-03-18T13:09:07+02:00"},{"@type":"WebSite","@id":"https:\/\/www.h-hennes.fr\/blog\/#website","url":"https:\/\/www.h-hennes.fr\/blog\/","name":"Herv\u00e9 Hennes","description":"D\u00e9veloppeur e-commerce","inLanguage":"fr-FR","publisher":{"@id":"https:\/\/www.h-hennes.fr\/blog\/#organization"}}]}},"aioseo_meta_data":{"post_id":"1303","title":null,"description":"Gestion des webservices prestashop, mise en place d'un socle technique","keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-29 16:38:25","updated":"2022-10-03 16:04:52","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.h-hennes.fr\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.h-hennes.fr\/blog\/category\/prestashop-2\/\" title=\"Prestashop\">Prestashop<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tPrestashop : Mise en place webservices\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.h-hennes.fr\/blog"},{"label":"Prestashop","link":"https:\/\/www.h-hennes.fr\/blog\/category\/prestashop-2\/"},{"label":"Prestashop : Mise en place webservices","link":"https:\/\/www.h-hennes.fr\/blog\/2016\/03\/12\/prestashop-mise-en-place-webservices\/"}],"_links":{"self":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1303","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/comments?post=1303"}],"version-history":[{"count":5,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1303\/revisions"}],"predecessor-version":[{"id":1316,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1303\/revisions\/1316"}],"wp:attachment":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/media?parent=1303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/categories?post=1303"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/tags?post=1303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}