X-Cart: shopping cart software

X-Cart forums (https://forum.x-cart.com/index.php)
-   Dev Questions (X-Cart 5) (https://forum.x-cart.com/forumdisplay.php?f=56)
-   -   REST API Module: need to extend the functionality (https://forum.x-cart.com/showthread.php?t=71096)

dagdag 01-30-2015 11:57 PM

REST API Module: need to extend the functionality
 
Добрый день!

Я крайне внимательно изучил документацию по REST API Module, но вот что никак не могу понять - подобный функционал нужен для чего... очевидно что для обмена информацией между БД X-Cart и другими приложениями.

И я не могу понять - как мне понять, какая информация изменялась и/или вобще может быть запрошена? get запросы по ID - не просто неудобно, это вообще ставит крест всей идее. Вот, например, по итогам дня мне нужно синхронизировать базы на сайте и в моем оффлайновом бухгалтерском приложении. И как мне понять, какие order_ID запрашивать? Мало того, что последний ID неизвестен - эти ID вовсе необязательно идут по порядку (заказы могли быть удалены).

Мне кажется (нечто подобное реализовано у нас в ФНС, где я работаю), нужен какой то универсальный метод, который по имени сущности и одному из параметров (например диапазон дат или ID) - должен отдавать клиенту список доступных ID.

Понятно, что самостоятельно (с Вашей помощью) или обратившись к более опытным разработчикам, я смогу реализовать подобное для моего сайта, но имхо это нужно всем, чтобы REST API действительно можно было пользоваться.

Спасибо!

tony_sologubov 02-03-2015 05:31 AM

Re: REST API Module: need to extend the functionality
 
Здравствуйте!

Я правильно понимаю, что вам надо выдергивать заказы по датам? Если да, то это можно реализовать через текущий РЕСТ АПИ.

Скажите, пожалуйста, какую именно выборку заказов вы хотите делать и я скажу, какой запрос надо делать.

dagdag 02-03-2015 09:29 PM

Re: REST API Module: need to extend the functionality
 
tony_sologubov, Спасибо за ответ!

В таком случае я (и, уверен, многие мои коллеги) буду благодарен Вам, если Вы вместо ответа мне просто, когда у Вас найдется время, дополните уже имеющуюся у Вас на сайте документацию по РЕСТ АПИ, расположенную на странице http://kb.x-cart.com/display/XDD/REST+API+documentation

Да, на данном этапе мне нужно выдергивать заказы по датам. Так когда то вышло, что вместо известного всем нам 1С мне пришлось писать свое приложение со сходным функционалом, и теперь для синхронизации данных между БД X-Cart и БД моего приложения у меня два пути - или напрямую лезть в базу и выдергивать своими скриптами все что мне нужно или попытаться использовать готовые модули (что как мне кажется правильнее). Соответственно, как минимум, мне нужно читать из X-Cart новые изменившиеся, с момента последнего чтения, заказы.

tony_sologubov 02-16-2015 04:01 AM

Re: REST API Module: need to extend the functionality
 
Здравствуйте!

Извините, что долго не отвечал. Последние две недели вышли очень загруженными и я не заглядывал на форум.

Ниже пример запроса, который будет выдергивать заказы, которые были оформлены с 01-01-2014 (1388534400 unix timestamp) по 01-01-2015 (1420070400 unix timestamp)

Code:

admin.php?target=RESTAPI&_key=YOUR-SECURITY-KEY&_schema=default&_path=order&_cnd[date][0]=1388534400&_cnd[date][1]=1420070400

При этом запросе, Икс-Карт начинает использовать функцию prepareCndDate() из класса \XLite\Model\Repo\Order, чтобы отсеить нужные записи.

Как я понимаю, это не совсем то, что вам надо, потому что вам надо дергать заказы по дате последнего изменения, а не по дате оформления. В этом случае, вам надо создать свой модуль, которые добавит новый prepareCnd%() метод, который будет работать с lastRenewDate полем таблицы заказов, вместо поля date.

Пример создания такого метода тут: http://kb.x-cart.com/display/XDD/search%28%29+method

После создания этого метода в классе \XLite\Model\Repo\Order, в запросе вы сможете указывать, что он должен запуститься для фильтрации (например, как _cnd[date][0]=1388534400&_cnd[date][1]=1420070400) и таким образом получите нужную выборку.

Если я что-то недостаточно объяснил, то дайте, пожалуйста, знать.

Антон.

dagdag 02-16-2015 04:27 AM

Re: REST API Module: need to extend the functionality
 
Большое спасибо за ответ!!!

Теперь мне все ясно, и создание произвольных выборок больше не будет представлять для меня сложности. Вынужден признать, что без документации и Вашей помощи сам бы я никогда до этого не докопался :)

Подскажите пожалуйста, а судя по коду модуля, я же могу запрашивать данные не только в формате Json но и сразу Xml?

tony_sologubov 02-16-2015 06:13 AM

Re: REST API Module: need to extend the functionality
 
Да, чтобы получать данные в XML, то HTTP_ACCEPT заголовок запроса должен быть передан как "application/xml".

Кроме того, если вы будете делать модуль надстройки над РЕСТ АПИ, то там сможете задать какое-то иное условие, по которому результаты будут выводить как XML.


All times are GMT -8. The time now is 01:18 PM.

Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.