我如何提供简单的Drupal Web服务?

时间:2011-10-28 06:36:56

标签: web-services drupal rest

我们需要提供一个简单的类似REST的Web服务接口,用于与第三方网站进行通信:

远程致电我们:

https:/www.oursite.com/user/{ID}/logged_on

返回远程站点:

"YES" | "NO"

Web服务应该能够:

  • 参数(例如上例中的ID
  • 做一些查找/检查
  • 返回纯文本结果

我是否需要为此目的编写自定义模块?

3 个答案:

答案 0 :(得分:4)

我推荐Services模块。

  • 使用它可以设置端点路径,例如: 'my_services_path'。
  • 然后启用'系统 - >连接'资源。

设置完毕后,您可以拨打远程电话,例如:

http://www.example.com/my_services_path/system/connect http://www.example.com/my_services_path/system/connect.json

这将返回XML(或JSON),指示当前用户是否已登录。您需要解析返回的结果以查看用户对象结果。

要检查某个UID是否已登录,您需要启用“用户 - >检索'资源,然后你可以打电话,例如:

http://www.example.com/my_services_path/user/1 http://www.example.com/my_services_path/user/1.json

这将返回XML(或JSON)中的Drupal用户对象。

据我所知,它不包含指示用户是否已登录的变量。它确实包含他们的上次登录时间,状态等。

您可能需要通过模块中的hook_user“load”操作进行一些自定义,以附加自定义变量,例如: $ user-> is_logged_in并动态设置其值。然后'用户 - >检索'服务调用将包含该变量。

现在我写了这个答案,我看到你想要一个纯文本的结果,doh!那么,我会推荐@zeroFiG的答案。

答案 1 :(得分:3)

你需要自己的模块,你应该把它放在:

function MODULENAME_menu() {
  $items = array();

  $items['user/%/logged_on'] = array(
    'title' => 'Ajax Dessins',
    'page callback' => 'MODULENAME_check_user_status',
    'page arguments' => array(1),
    'access callback' => TRUE,
    'type' => MENU_CALLBACK
  );

  return $items
}

function MODULENAME_check_user_status($uid) {
  // Do the lookup / checking
  // and then something like:
  echo $result;
  exit();
}

将“MODULENAME_”替换为您的模块名称,这应该可以解决问题。这假设您有Drupal 6.它应该与drupal 5/7相似;唯一的区别在于菜单声明。

答案 2 :(得分:1)

尝试使用此功能drupal_http_request。是的,您必须编写自定义模块并调用此功能。