Qanday oddiy Drupal veb-xizmatini taqdim etaman?

Uchinchi tomon veb-sayti bilan bog'lanish uchun oddiy REST kabi veb-xizmat interfeysi bilan ta'minlashimiz kerak:

Bizga uzoqdan qo'ng'iroq qilish:

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

Uzoq saytga qaytadi:

"YES" | "NO"

Veb-xizmat quyidagi imkoniyatlarga ega bo'lishi kerak:

  • Yuqoridagi misolda parametrni (masalan, ID ) olish.
  • biroz yuqoriga qarash/nazorat qilishni amalga oshiring
  • tekis matnli natijani qaytaradi

Men uchun maxsus modul yozishim kerakmi?

0

3 javoblar

Xizmatlar modulini tavsiya qilaman.

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

O'rnatish vaqtida uzoqdan qo'ng'irog'ni amalga oshirishingiz mumkin, masalan:

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

Bu xml yoki JSONni joriy foydalanuvchi tizimga kirib kiritilganligini bildiradi. Siz foydalanuvchi natija natijalarini ko'rish uchun qaytarilgan natijani ajrata olasiz.

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

Bu xml (yoki JSON) da bir Drupal foydalanuvchi ob'ektini qaytaradi.

Mening ma'lumotimga ko'ra, foydalanuvchi o'z tizimiga kirish yoki kiritilmasligini ko'rsatadigan o'zgaruvchini o'z ichiga olmaydi. Ularning oxirgi kirish vaqti, holati va boshqalarni o'z ichiga oladi.

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.

Endi men bu javobni yozganimda, siz aniq matnli natija istaganingizni ko'rmoqdaman. Xo'sh, u holda men javobni @zeroFiG dan tavsiya qilaman.

4
qo'shib qo'ydi

Buning uchun siz o'zingizning modulingiz kerak bo'ladi, uni quyidagicha qo'yish kerak:

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();
}

Modulning nomi bilan "MODULENAME_" ni o'zgartiring va bu ishni bajarish kerak. Bu sizda Drupal borligini taxmin qilmoqda. Drupal 5/7 bilan shunga o'xshash bo'lishi kerak; faqatgina farqlar menyu deklaratsiyasida.

3
qo'shib qo'ydi

Ushbu funksiyani drupal_http_request dan ko'ring. Ha, siz maxsus modulni yozishingiz va bu funksiyani chaqirishingiz kerak.

1
qo'shib qo'ydi