не удалось заставить пользовательскую службу возвращать результат с помощью модуля служб
Я изучаю веб-службы и внедряю их в 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. Любая помощь в том, что я мог пропустить или где я допустил ошибку, была бы очень признательна.
1 answers
Наконец-то понял это, и мальчик был плох. Конечная точка, которую я должен был достичь, была http://mysite.com/myawesomeendpoint/awesomeregistrant
, но вместо этого я нажал http://mysite.com/myawesomeendpoint
. Надеюсь, это кому-нибудь поможет.