Follow us on Twitter X-Cart on Facebook Wiki
Shopping cart software Solutions for online shops and malls

REST API Module: need to extend the functionality

 
Reply
   X-Cart forums > X-Cart 5 > Dev Questions (X-Cart 5)
 
Thread Tools Search this Thread
  #1  
Old 01-30-2015, 11:57 PM
  dagdag's Avatar 
dagdag dagdag is offline
 

Advanced Member
  
Join Date: Sep 2014
Location: Volgograd
Posts: 81
 

Default REST API Module: need to extend the functionality

Добрый день!

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

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

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

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

Спасибо!
Reply With Quote
  #2  
Old 02-03-2015, 05:31 AM
  tony_sologubov's Avatar 
tony_sologubov tony_sologubov is offline
 

X-Cart team
  
Join Date: Jan 2009
Posts: 2,431
 

Default Re: REST API Module: need to extend the functionality

Здравствуйте!

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

Скажите, пожалуйста, какую именно выборку заказов вы хотите делать и я скажу, какой запрос надо делать.
__________________
Found a bug in X-Cart? Post it to our bug tracker!
Know how to make X-Cart better? Suggest an idea!
Reply With Quote
  #3  
Old 02-03-2015, 09:29 PM
  dagdag's Avatar 
dagdag dagdag is offline
 

Advanced Member
  
Join Date: Sep 2014
Location: Volgograd
Posts: 81
 

Default 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 новые изменившиеся, с момента последнего чтения, заказы.
Reply With Quote
  #4  
Old 02-16-2015, 04:01 AM
  tony_sologubov's Avatar 
tony_sologubov tony_sologubov is offline
 

X-Cart team
  
Join Date: Jan 2009
Posts: 2,431
 

Default 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) и таким образом получите нужную выборку.

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

Антон.
__________________
Found a bug in X-Cart? Post it to our bug tracker!
Know how to make X-Cart better? Suggest an idea!
Reply With Quote
  #5  
Old 02-16-2015, 04:27 AM
  dagdag's Avatar 
dagdag dagdag is offline
 

Advanced Member
  
Join Date: Sep 2014
Location: Volgograd
Posts: 81
 

Default Re: REST API Module: need to extend the functionality

Большое спасибо за ответ!!!

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

Подскажите пожалуйста, а судя по коду модуля, я же могу запрашивать данные не только в формате Json но и сразу Xml?
Reply With Quote
  #6  
Old 02-16-2015, 06:13 AM
  tony_sologubov's Avatar 
tony_sologubov tony_sologubov is offline
 

X-Cart team
  
Join Date: Jan 2009
Posts: 2,431
 

Default Re: REST API Module: need to extend the functionality

Да, чтобы получать данные в XML, то HTTP_ACCEPT заголовок запроса должен быть передан как "application/xml".

Кроме того, если вы будете делать модуль надстройки над РЕСТ АПИ, то там сможете задать какое-то иное условие, по которому результаты будут выводить как XML.
__________________
Found a bug in X-Cart? Post it to our bug tracker!
Know how to make X-Cart better? Suggest an idea!
Reply With Quote
Reply
   X-Cart forums > X-Cart 5 > Dev Questions (X-Cart 5)


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -8. The time now is 07:37 AM.

   

 
X-Cart forums © 2001-2020