Автор Тема: REST-сервисы в программировании PrestaShop  (Прочитано 13942 раз)

12 Июль 2011, 16:12:09
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102503
  • Репутация: +34219/-0
    • Просмотр профиля
В начале обсуждения этой темы, немного теориии.
Что такое REST?
REST определяет архитектуру, которая представляет собой набор методов манипуляции объектами в Интернет-приложениях. REST-приложения включают несколько правил, одно из которых мы будем использовать - CRUD.
В протоколе HTTP существуют четыре основных метода, которые выполняют обработку данных, и которые определены в REST-архитектуре :
GET-> Retrieve (Получить)
POST -> Create (Создать)
PUT-> Update (Изменить)
DELETE -> Delete (Удалить)
Что такое CRUD?
CRUD является английский акроним значение "Create, Read, Update, Delete" или создание, извлечение, обновление и удаление.
Это четыре основные операции, которые позволяют управлять данными в веб-приложении.
Веб-сервисы (веб-службы) PrestaShop  основаны на REST-архитектуре, это дает возможности разработчикам решений на основе PrestaShop использовать множество платформ, на самом деле протоколы HTTP и XML используются для обмена данными между различными приложениями и на бесчисленных платформах.

Для примера, разберем создание небольшого модуля, выполняющего эти 4 операции  в интернет-магазине на PrestaShop.
12 Июль 2011, 16:38:30
Ответ #1
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102503
  • Репутация: +34219/-0
    • Просмотр профиля
Разделим создание модуля PrestaShop на этапы:
1 - Введение: Создание доступа в бэк-офис
2 - Начало: Тестирование доступа к веб-сервису
3 - Первые шаги: Доступ к веб-службе и формирование списка клиентов
3.1 - Создание библиотеки для доступа к веб-сервису
3.2 - Обработка ошибок
3.3 - Обработка списка клиентов
4 - Получение данных: Получение данных клиента
5 - Изменение: Обновление данных клиента
6 - Создание: Форма для добавления
7 - Удалить: Удаление клиентской базы
8 - Дополнительные возможности использования
Приложение: понятия, изложенные в этом руководстве
12 Июль 2011, 16:42:12
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 105673
  • Репутация: +39553/-0
    • Просмотр профиля
    • Webstudio UwK
Это перевод руководства программиста под Prestashop - "Tutoriel Webservice REST" ?
Могу помочь с переводом. Готов осветить первые три пункта.
Cоздание интернет сайтов Webstudio UwK
12 Июль 2011, 16:51:09
Ответ #3
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Также могу помочь. Свободный английский и французкий.
Могу сделать полный перевод на русский последней версии prestashop.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
12 Июль 2011, 17:11:04
Ответ #4
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102503
  • Репутация: +34219/-0
    • Просмотр профиля
Спасибо за желание помочь.

Цитата: Виталий
...
Все правильно, это перевод "Tutoriel Webservice REST". От Вас перевод пунктов 1,2,3.


Цитата: mAgency
...
За вами пункты 4,5,6
13 Июль 2011, 13:17:33
Ответ #5
  • Старожил
  • ****
  • Сообщений: 274
  • Репутация: +3/-0
    • Просмотр профиля
Тему подняли интересную. Продолжение когда ждать ?

Также могу помочь. Свободный английский и французкий.
Могу сделать полный перевод на русский последней версии prestashop.

Русский перевод prestashop скачать можно на форуме или вы можете выслать ?
Если скачать нельзя, то вышлите мне prestasho 1.4 русский на почту.
13 Июль 2011, 13:34:08
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 885
  • Репутация: +206/-0
    • Просмотр профиля
Тоже хочу русский prestashop 1.4.
Вышлите на почту, заранее спасибо.
13 Июль 2011, 13:40:07
Ответ #7
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102503
  • Репутация: +34219/-0
    • Просмотр профиля
В этой теме пишем только по Руководству программиста под Prestashop - "Tutoriel Webservice REST".

Вопросы по переводу платформы prestashop в другой ветке.

28 Ноябрь 2012, 22:54:28
Ответ #8
  • Фрилансер
  • *
  • Сообщений: 143
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • smartceo.ru
Жалко что тема мало обсуждается. REST API полезная вещь при правильном использовании. К сожалению состав объектов и их структура не достаточно унифицированы из-за чего приложения под REST API для 1.4 не в полной мере рабоают на 1.5 и наоборот.
https://smartceo.ru (теория и практика интернет-торговли, создание и развитие каналов эффективных продаж в интернете, портфолио)
20 Октябрь 2015, 15:26:08
Ответ #9
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Тема хорошая, может продолжим? От себя добавляю создание товара.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
20 Октябрь 2015, 15:46:25
Ответ #10
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
<?php
define('DEBUG'true);
define('_PS_DEBUG_SQL_'true);
define('PS_SHOP_PATH''http://domain.ru');
define('PS_WS_AUTH_KEY''12334567891234567894566987445');

require_once ('../PSWebServiceLibrary.php');

$webService = new PrestaShopWebservice(PS_SHOP_PATHPS_WS_AUTH_KEYDEBUG);
$xml $webService->get(array('url' => PS_SHOP_PATH '/api/products?schema=synopsis'));
$resources $xml->children()->children();
$resources->id;
$resources->id_category_default 2;
$resources->id_default_image 1;
$resources->price 100;
$resources->available_for_order 1;

$node dom_import_simplexml($resources->name->language[0][0]);
$no $node->ownerDocument;
$node->appendChild($no->createCDATASection("cdata name"));
$resources->name->language[0][0] = "New product name";
$resources->name->language[0][0]['id'] = 1;
$resources->name->language[0][0]['xlink:href'] = PS_SHOP_PATH '/api/languages/1';

$node dom_import_simplexml($resources->description->language[0][0]);
$no $node->ownerDocument;
$node->appendChild($no->createCDATASection("cdata description"));
$resources->description->language[0][0] = "description";
$resources->description->language[0][0]['id'] = 1;
$resources->description->language[0][0]['xlink:href'] = PS_SHOP_PATH '/api/languages/1';
$node dom_import_simplexml($resources->description_short->language[0][0]);
$no $node->ownerDocument;
$node->appendChild($no->createCDATASection("cdata description_short"));
$resources->description_short->language[0][0] = "description_short";
$resources->description_short->language[0][0]['id'] = 1;
        
$resources->description_short->language[0][0]['xlink:href'] = PS_SHOP_PATH '/api/languages/1';

        
$node dom_import_simplexml($resources->link_rewrite->language[0][0]);
$no $node->ownerDocument;
$node->appendChild($no->createCDATASection("cdata link_rewrite"));
$resources->link_rewrite->language[0][0] = "link-rewrite";
$resources->link_rewrite->language[0][0]['id'] = 1;
$resources->link_rewrite->language[0][0]['xlink:href'] = PS_SHOP_PATH '/api/languages/1';

$resources->associations->categories->addChild('category')->addChild('id'3);
$resources->associations->categories->addChild('category')->addChild('id'4);

try 
{
$opt = array('resource' => 'products');
$opt['postXml'] = $xml->asXML();
$xml_request $webService->add($opt);
}
catch (PrestaShopWebserviceException $ex)
{
echo '<b>Error : '.$ex->getMessage().'</b>';
$trace $ex->getTrace();
//echo($trace);
}

$xml_response $xml_request['response'];
$response = new SimpleXMLElement($xml_response);
$resources $response->children()->children();

 $stock_available_id $resources->associations->stock_availables->stock_available[0]->id;
$id_created_product $resources->id;

$url "http://domain.ru/api/images/products/$id_created_product";

$image_path '/path/image.jpg';

$ch curl_init();
curl_setopt($chCURLOPT_URL$url);
curl_setopt($chCURLOPT_POSTtrue);
curl_setopt($chCURLOPT_USERPWDPS_WS_AUTH_KEY.':');
curl_setopt($chCURLOPT_POSTFIELDS, array('image' => '@'.$image_path.';type=image/jpg'));
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
$result curl_exec($ch);
curl_close($ch);
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
20 Октябрь 2015, 17:00:36
Ответ #11
  • Пользователь
  • **
  • Сообщений: 91
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Чё-то не работает... кучу ошибок выдаёт  ???
20 Октябрь 2015, 18:43:53
Ответ #12
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Для отладки я включил показ ошибок.
define('DEBUG', true);
define('_PS_DEBUG_SQL_', true);
Скрипт нужно адаптировать под ваши условия.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
08 Декабрь 2015, 17:46:34
Ответ #13
  • Фрилансер
  • *
  • Сообщений: 143
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • smartceo.ru
Тема хорошая, может продолжим? От себя добавляю создание товара.

Да я тут столкнулся на одном хостинге с ограничением работы этого интерфейса. Настройки безопасности такие что API не работает. Кроме того формат данных от версии к версии меняется и не все элементы данных можно редактировать. В общем не очень надежное решение для развития межсистемного обмена. По крайней мере по сравнению с Magento этот элемент в Престе хромает.
https://smartceo.ru (теория и практика интернет-торговли, создание и развитие каналов эффективных продаж в интернете, портфолио)
08 Декабрь 2015, 17:56:01
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Чем они отличаются с Magento? В Prestashop все тоже самое.