не удалось заставить пользовательскую службу возвращать результат с помощью модуля служб


Я изучаю веб-службы и внедряю их в drupal 6 и пытаюсь использовать модуль Службы с его сервером REST для реализации веб-службы для добавления пользователя.

Поскольку существует существующая функциональность для всех операций CRUD для пользователей, я пытаюсь реализовать свой пользовательский код для регистрации пользователя с помощью HTTP-сообщения соответствующих данных, используя REST как часть задачи. Я реализовал пользовательский пользовательский ресурс в своем модуле (awesomeness.module) и заставил его появиться в списке ресурсов с соответствующей операцией (Создать).

/**
 * Implements hook_services_resources().
 */
function awesomeness_services_resources() {
  return array(
    'awesome_registrant' => array(
      'operations' => array(
        'create' => array(
          'file' => array('type' => 'inc', 'module' => 'awesomeness'),
          'callback' => '_create_registrant_from_awesomeness',
          'help' => 'Creates or updates user from the 
                     json data initiated by the Awesomeness request.',
          'access callback' => '_create_registrant_from_awesomeness_permissions',
          'access arguments' => array('dummy'),
          'access callback file' => array('type' => 'inc', 'module' => 'awesomeness'),
          'args' => array(
            array(
              'name' => 'user_data',
              'type' => 'string',
              'description' => 'The json data of User posted
                                by Awesomeness to register information.',
              'optional' => FALSE,
              'source' => 'data',
            ),
          ),
        ),
      ),      
    ),
  );
}

Соответствующие обратные вызовы для запроса и доступа в awesomeness.inc, как показано ниже

/**
 * Callback function to create or registrant from the web service request
 */
function _create_registrant_from_awesomeness($user_data) {
  watchdog('AwesomeWebservice', "I am called");
  $user_info = var_export($user_data, TRUE);
  watchdog('AwesomeWebservice', $user_info);
  return "Is called";
}

/**
 * Access callback for the registration Web service.
 */
function _create_registrant_from_awesomeness_permissions($access = TRUE) {
  // any logic on access restriction goes here, currently 
  // setting true to check that calls can be made as an anonymous user
  return TRUE;
}

Я создал конечную точку и включил Create для awesome_registrant и сделал запрос POST с надстройкой POSTER для firefox, установив тип контента как application/x-www-form-urlencoded и следующие данные json в теле контента {"username":"[email protected]","password":"epicawesomeness"}.

Однако я просто получаю код ответа 200 и ничего больше, где Я ожидаю, что обратный вызов вернет "Вызывается".

Включение режима отладки показывает только объект информации о сервере, но не контроллер или данные о возвращаемом значении, в отличие от основных служб, таких как node retrieve.

Также для уточнения приложение/x-www-форма-urlencoded включено для веб-сервера REST. Любая помощь в том, что я мог пропустить или где я допустил ошибку, была бы очень признательна.

Author: optimusprime619, 2013-06-06

1 answers

Наконец-то понял это, и мальчик был плох. Конечная точка, которую я должен был достичь, была http://mysite.com/myawesomeendpoint/awesomeregistrant, но вместо этого я нажал http://mysite.com/myawesomeendpoint. Надеюсь, это кому-нибудь поможет.

 0
Author: optimusprime619, 2013-06-07 15:23:19