私はどのように簡単なDrupal Webサービスを提供しますか?

サードパーティのWebサイトと通信するための簡単なREST風Webサービスインターフェイスを提供する必要があります。

私たちへのリモートコール:

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

リモートサイトに戻る:

"YES" | "NO"

Webサービスは以下の能力が必要です。

  • パラメータを取る(例: ID
  • ルックアップ/チェックを行う
  • プレーンテキストの結果を返します

その目的のためにカスタムモジュールを書く必要がありますか?

0

3 答え

サービスモジュールをお勧めします。

  • With it you can setup an endpoint path, e.g.: 'my_services_path'.
  • Then enable the 'System -> Connect' resource.

これが設定されているときには、次のようなリモート呼び出しを行うことができます。

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

現在のユーザーがログインしているかどうかを示すXML(またはJSON)が返されます。ユーザーオブジェクトの結果を表示するには、返された結果を解析する必要があります。

To check whether or not a certain UID is logged in, you will need to enable the 'User -> Retrieve' resource, then you can make a call to, e.g.:

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

これは、XML(またはJSON)でDrupalユーザオブジェクトを返します。

私の知る限り、ユーザーがログインしているかどうかを示す変数は含まれていません。最後のログイン時間、ステータスなどを含んでいます。

You may have to do a little customization via the hook_user 'load' operation in your module to attach a custom variable, e.g. $user->is_logged_in and set its value dynamically. Then a 'User -> Retrieve' service call would contain that variable for you.

今、私はこの答えを書いたので、あなたはプレーンテキストの結果が好きだとわかります。では、@ zeroFiGの回答をお勧めします。

4
追加された

このためにあなた自身のモジュールが必要です。内側にこれを置くべきです:

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と似ているはずです。唯一の違いはメニュー宣言にあります。

3
追加された

この機能を drupal_http_request から試してみてください。はい、カスタムモジュールを作成してこの関数を呼び出す必要があります。

1
追加された