Saya mencoba menyiapkan WebAPI Tropo dengan situs Drupal, dan saya pikir saya hanya akan membuat panggilan balik hook_menu () misalnya.com/tropo, kemudian gunakan panggilan balik hook_menu yang baru saja saya buat untuk menggunakan panggilan API dari Tropo ( yang berisi array data JSON sederhana), lalu merespons.
Saya dapat melakukan bagian respons dengan cukup mudah ... membangun data, drupal_json_output () dan keluar (yang pada dasarnya mengembalikan JSON).
Bagian yang saya mengalami masalah adalah mendapatkan data yang dikirim ke menu / panggilan balik menu tropo ... Saya tidak dapat mengakses data apa pun dengan menggunakan salah satu dari berikut ini:
$json = file_get_contents("php://input"); // returns NULL
(di bawah ini menggunakan modul inputstream :)
$json = file_get_contents("drupal://input"); // also returns NULL
Saya memeriksa apa yang dilakukan beberapa modul lain, dan sepertinya mereka menggunakan hook_init untuk mengambil JSON. Apakah ini metode yang disukai? Saya ingin bisa melakukannya di hook_menu dan menggunakan jalur saya sendiri dan semacamnya ...
Atau, apakah saya lebih baik menulis skrip PHP saya sendiri dan menjalankan di luar Drupal, hanya melakukan bootstrap untuk database jika saya perlu?
Jawaban:
Ya, ternyata saya sudah mendapatkan datanya, tapi saya lupa mendekodekannya ...
Dalam panggilan balik hook_menu saya:
Kemudian saya bisa bermain sebanyak yang saya mau dengan nilai $ accept.
Selain itu, modul inputstream sangat berharga dalam membiarkan saya masuk ke input stream lebih dari sekali (jika Anda mencoba menggunakan
php://input
lebih dari sekali, yang kedua kali, dan yang mengikuti, akan mengembalikan NULL).Sebagai catatan tambahan, saya baru melihat hari ini modul baru yang mungkin cara yang lebih sederhana untuk menangani ini: Konten sebagai JSON
sumber
Server REST yang merupakan bagian dari modul Layanan melakukan ini secara otomatis untuk JSON dan juga untuk format lain: http://drupal.org/project/services
Ini juga mendukung Inputstream (Inputstream dibangun untuk menangani verifikasi OAuth dan decoding Layanan dari aliran yang sama).
sumber