Як забяспечыць просты вэб-сэрвіс Drupal?

Нам трэба забяспечыць просты REST-падобны інтэрфейс вэб-службы для ўзаемадзеяння з вэб-сайта 3 партыі:

Аддалены выклік да нас:

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

Зварот да выдаленага сайту:

"YES" | "NO"

Вэб-сэрвіс павінен быць здольны:

    <�Літый> прымае параметр (напрыклад, ID у прыведзеным вышэй прыкладзе) </літый>
  • зрабіць некаторы погляд уверх/праверка
  • вяртае звычайны тэкставы вынік

Мне трэба напісаць спецыяльны модуль для гэтай мэты рабіць?

0

3 адказы

Я рэкамендую модуль Services .

  • 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

Гэта вяртае аб'ект карыстальніка Drupal у xml (або JSON).

Наколькі мне вядома, ён не ўтрымлівае пераменны, паказвальнага ці не рэгіструецца карыстальнік. Гэта сапраўды змяшчае іх у апошні раз Увайсці, статус і г.д.

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.

Цяпер, калі я пісаў гэты адказ, я бачу, што вы хацелі б просты тэкставы вынік, DOH! Ну, тады я рэкамендаваў бы адказ ад @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. Ён павінен быць дастаткова блізкі з Друпал 5/7; толькі адрозненне ў абвяшчэнні меню.

3
дададзена

Паспрабуйце гэтую функцыю з drupal_http_request . Так, вы павінны напісаць уласны модуль і выклікаць гэтую функцыю з.

1
дададзена