Мне нужно использовать Drupal в качестве клиента для веб-службы, для извлечения данных и их отображения в виде или в виде контента. (Используется формат JSON или REST.)
Я использую модуль клиента Web-сервиса в Drupal 7 и модуль Services в Drupal 6, но я не знаю, как их использовать. Я прочитал документацию, но не получил никакого результата.
Может кто-нибудь помочь в этом вопросе, или подскажите, как использовать эти модули? Есть ли другой модуль для этой цели?
Возможное решение: я нахожу модуль под названием XML VIEWS, но этот модуль конвертирует только файлы XML.
Теперь я программирую в этом модуле преобразование JSON в XML.
В этих файлах: xml_views_plugin_query_xml.inc
В этой функции: Выполнить
У кого-нибудь есть другое решение?
Ответы:
У Drupal есть специальные функции, которые могут помочь в общении с веб-сервисом и обработке ввода JSON.
Drupal 7 имеет следующие функции:
rawurlencode()
строку -d.С помощью этих функций вы можете написать свой собственный модуль для отправки запросов на сайт, реализующий веб-сервис.
Если существуют некоторые ограничения на количество запросов, которые могут быть сделаны к веб-серверу, вы можете использовать функции Drupal для кэширования результатов, полученных с веб-сервера:
Заметьте, что Drupal поддерживает более одной корзины, и модули могут использовать свои собственные корзины, когда это необходимо.
Drupal также поддерживает элементы кэша, которые автоматически удаляются при последовательном пролистывании кэша (см. Описание константы CACHE_TEMPORARY ). Реализация hook_flush_caches () , модули позволяют пользователям администраторских очистить кэш , используемый модулем , когда кнопка «Очистить» на странице «Performance» нажата, или любое время модуль вызывает drupal_flush_all_caches () .
В Drupal 7 данные кэша для часто используемых данных связаны со статической переменной, обрабатываемой с помощью drupal_static () . Когда данные действительно часто используются при выводе одной и той же страницы, используется код, подобный следующему:
Код является частью module_implements () .
источник
Каждый раз, когда мне нужно было воспользоваться веб-сервисом , я только что создал класс PHP, основанный на file_get_contents или curl в сочетании с json_decode или simplexml_load_string .
Затем к классу получают доступ в модуле через функцию получения, которая использует drupal_static , или
$static
шаблон для Drupal 6.Затем я использую это в своих пользовательских блоках, обратных вызовах меню и т. Д. По мере необходимости.
РЕДАКТИРОВАТЬ
Ответ @ kiamlaluno правильный и демонстрирует способ сделать это через API Drupal. Основная причина, по которой я этого не делаю, заключается в том, что я предпочитаю абстрагировать класс веб-сервиса таким образом, чтобы я мог использовать его в других приложениях. У этого есть свои преимущества и недостатки, поэтому взвесите ваши варианты.
источник