Перейти к основному содержанию

Что за Services и с чем его едят?

Модуль Services позволяет создавать точки доступа к основным функциям Drupal всего в пару кликов.

Кому нужен модуль Services?

  • Flash/Flex или JS разработчикам ищущим серверную CMS

  • Разработчикам мобильных приложений для интеграции Drupal с Android или iOS

  • Всем кому нужна интеграция с удалённым Drupal сайтом

Add a new endpoint

Для каждой точки доступа Services прямо “из коробки” позволяют разграничивать права и выводить данные Drupal.

Доступ прямо из "коробки"

Данные можно получить практически в любом удобном формате.

Удобный форматУдобный формат

Также большим плюсом является  наличие неплохого Service Api - что увеличивает их возможности до бесконечности.

 

С чего начать? (быстрый старт)

1. Скачать и установить:

2. Создать точку доступа

  • Перейти в настройки Services (admin/structure/services) и кликнуть на ссылку Add
  • Set server → Ваш REST server
  • End point → Машинное имя вашей точки доступа
  • Отметить Session authentication

3. Задать настройки

  • Перейти на Set resorses (admin/structure/services/list/YOUR_ENDPOINT/resources) и определить права для данной точки
  • Перейти на Server settings (admin/structure/services/list/YOUR_ENDPOINT/server) и определить нужные форматы данных
  • Тестить (https://www.drupal.org/node/1975670)

4. Использовать это в своих целях

5. Наслаждаться результатом=)

 

Документация по модулю: https://www.drupal.org/documentation/modules/services

Неплохая статья: http://tylerfrankenstein.com/user/4/code/drupal-services-examples


Пример кода:

// Создание ноды с Entity reference на php c использованием json

function your_module_create_node() {
 $url = 'http://site.url/your_end_point/node';
 $node_type = 'page';
 $node_title = 'Some node title';
 $reference_nid = '3';

 $node_data = json_encode(array(
   'type' => $node_type,
   'title' => $node_title,
   'field_reference' => array(
     LANGUAGE_NONE => array(
       'target_id' => $reference_nid,
     )
   )
 ));

 $login_url = 'http://site.url/your_end_point/user/login';

 $user_options = array(
   'headers' => array(
     'Content-Type' => 'application/json'),
   'method' => 'POST',
   'data' => json_encode(array(
     'username' => 'username',
     'password' => 'password'
   ))
 );

 $result = drupal_http_request($login_url, $user_options);

 if ($result->code == 200) {
   $user_data = json_decode($result->data);
   setcookie('drupal_session_name', $user_data->session_name);
   setcookie('drupal_session_id', $user_data->sessid);
   setcookie('drupal_session_token', $user_data->token);
   $cookie = '' . $user_data->session_name . '=' . $user_data->sessid . '';
 } else return FALSE;

 $node_options = array(
   'headers' => array(
     'Content-Type' => 'application/json',
     'Cookie' => $cookie,
     'X-CSRF-Token' => $user_data->token,
   ),
   'method' => 'POST',
   'data' => $node_data,
 );

 return drupal_http_request($url, $node_options);
}

 

Теги: