Bagaimana cara membuat test_endpoint?

29

Saya baru mengenal drupal dan saya menggunakan modul layanan untuk menggunakan modul REST dan RESTWS. Saya menggunakan RESTWS dan bisa mendapatkan konten node dengan http: //base_url/node/1.xml dan sekarang saya perlu menambahkan node dan pengguna dari aplikasi PHP eksternal saya ke drupal. Saya mencari di Google dan saya menemukan di sini bahwa kami perlu menggunakan http: // base_drupal_url / drupal7 / test_endpoint / pengguna . Saya mencoba membuat layanan dari Drupal 7, tapi saya tidak tahu apa yang harus saya berikan pada judul titik, nama dan jalur titik akhir dan saya berasumsi saya harus memberikan jalur titik akhir yang sama di ikal.

Setiap bantuan tentang cara memeriksa apakah server sisanya diinstal dan cara membuat jalur titik akhir akan sangat membantu.

Saya menggunakan Drupal 7 dengan layanan modul layanan-7.x-3.0-rc3

sridhar
sumber
Apakah Anda memecahkan masalah Anda? Saya telah membuat titik akhir dan jalur sumber daya persis seperti Anda, tetapi saya mendapatkan "Tidak Ditemukan URL yang diminta / ~ DrupalWorkstation / Drupal / drupal_7_16 / rest / node tidak ditemukan di server ini." kesalahan. Silakan periksa komentar saya untuk jawaban terpilih tertinggi. Beri tahu saya jika Anda memiliki solusi untuk ini.
Raj Pawan Gumdal

Jawaban:

56

Modul layanan mudah digunakan, tetapi sulit untuk mengonfigurasinya terutama jika Anda baru mengenal konsep tersebut. Jadi, saya akan memposting tangkapan layar untuk membuat konfigurasi modul Layanan mudah bagi pengguna "Jawaban Drupal".

Berikut ini adalah versi modul Layanan yang diinstal pada mesin saya:

masukkan deskripsi gambar di sini

Buat titik akhir yang disebut 'istirahat' seperti yang ditunjukkan di bawah ini:

masukkan deskripsi gambar di sini

Pilih jenis server dan jalur titik akhir:

masukkan deskripsi gambar di sini

Pilih daftar sumber daya yang ingin Anda aktifkan dan tentukan alias:

masukkan deskripsi gambar di sini

Pilih format respons dan minta parser yang ingin Anda aktifkan:

masukkan deskripsi gambar di sini

Anda dapat menguji konfigurasi Anda seperti yang ditunjukkan di bawah ini:

masukkan deskripsi gambar di sini

Anda bisa mendapatkan daftar semua simpul seperti di bawah ini:

masukkan deskripsi gambar di sini

Dan simpul spesifik sebagai:

masukkan deskripsi gambar di sini

Berikut ini adalah contoh skrip yang disediakan oleh MichaelCole di sini http://drupal.org/node/910598#comment-4677738 untuk membuat node dari aplikasi PHP eksternal apa pun.

Saya menduplikasi kodenya untuk kelengkapan jawaban ini.

//--------------login to the server------------------------
$service_url = 'http://example.dev/rest/user/login.xml'; // .xml asks for xml data in response
$post_data = array(
    'username' => 'test',
    'password' => 'test',
);
$post_data = http_build_query($post_data, '', '&'); // Format post data as application/x-www-form-urlencoded
// set up the request
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  // have curl_exec return a string

curl_setopt($curl, CURLOPT_POST, true);             // do a POST
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); // POST this data
// make the request
curl_setopt($curl, CURLOPT_VERBOSE, true); // output to command line
$response = curl_exec($curl);
curl_close($curl);
print "LOGIN RESPONSE:\n";
var_dump($response);



// parse the response
$xml = new SimpleXMLElement($response);
$session_cookie = $xml->session_name . '=' . $xml->sessid;
// print "SESSION_COOKIE: $session_cookie";

file_put_contents('session_cookie.txt', $session_cookie);

//----------------create a node -------------------------------

$node_data = array(
    'type' => 'ct_metadata_core',
    'title' => 'test layer',
    'field_core_lat_n[und][0]' => array('value' => '90'),
    'field_core_lat_s[und][0]' => array('value' => '-90'),
    'field_core_long_e[und][0]' => array('value' => '180'),
    'field_core_long_w[und][0]' => array('value' => '-180'),
    'field_core_description[und][0]' => array('value' => 'National Data Buoy Center'),
    'field_core_originator[und][0]' => array('value' => 'NDBC'),
    'field_core_url[und][0]' => array('url' => 'http://www.ndbc.noaa.gov/kml/marineobs_as_kml.php?sort=pgm'),
    'field_cont_res_name_org[und][0]' => array('value' => 'test'),

);


$service_url = 'http://example.dev/rest/node'; // .xml asks for xml data in response
$session_cookie = file_get_contents('session_cookie.txt');

$node_data = http_build_query($node_data, '', '&'); // Format post data as application/x-www-form-urlencoded
// set up the request
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  // have curl_exec return a string

curl_setopt($curl, CURLOPT_COOKIE, "$session_cookie"); // use the previously saved session

curl_setopt($curl, CURLOPT_POST, true);             // do a POST
curl_setopt($curl, CURLOPT_POSTFIELDS, $node_data); // POST this data
// make the request
curl_setopt($curl, CURLOPT_VERBOSE, true); // output to command line
$response = curl_exec($curl);
curl_close($curl);
print "CREATE NODE RESPONSE:\n";
var_dump($response);


//----------------logout from the server-------------------------

$service_url = 'http://example.dev/rest/user/logout';
$session_cookie = file_get_contents('session_cookie.txt');

// set up the request
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  // have curl_exec return a string

curl_setopt($curl, CURLOPT_COOKIE, "$session_cookie"); // use the previously saved session
curl_setopt($curl, CURLOPT_POST, true);             // do a POST
curl_setopt($curl, CURLOPT_POSTFIELDS, ""); // POST this data
// make the request
curl_setopt($curl, CURLOPT_VERBOSE, true); // output to command line
$response = curl_exec($curl);
curl_close($curl);
print "LOGOUT RESPONSE:\n";
var_dump($response);
Ajinkya Kulkarni
sumber
2
Sangat berharga untuk menunjukkan bahwa dia mengaktifkan setiap opsi penguraian permintaan. Saya membuang banyak waktu sebelum saya menyadari bahwa "application / x-www-form-urlencoded" dinonaktifkan secara default.
drewish
di mana saya harus menulis cuplikan kode di atas? Apakah itu di dalam modul / layanan / server / rest_server / lib?
subhojit777
1
@ subhojit777 kode di atas adalah cuplikan kode PHP yang berdiri sendiri yang dapat digunakan untuk mengonsumsi layanan yang dihosting di server eksternal, dan Anda dapat menuliskannya di file modul Anda, tetapi menulisnya di modul / layanan / server / rest_server / lib mungkin bukan tempat terbaik.
Ajinkya Kulkarni
Saya telah mengatur semuanya seperti yang Anda katakan di localhost saya. Saya memiliki jalur ke situs drupal saya yang berjalan sebagai: localhost / ~ DrupalWorkstation / Drupal / drupal_7_16 . Halaman index.php berjalan ketika saya menekan URL di atas, tetapi titik akhir dan jalur sumber daya saya yang dikonfigurasi tidak akan berfungsi. URL saya untuk memicu layanan ini adalah: localhost / ~ DrupalWorkstation / Drupal / drupal_7_16 / rest / node . Saya mendapatkan kesalahan berikut: "Tidak Ditemukan URL yang diminta / ~ DrupalWorkstation / Drupal / drupal_7_16 / rest / node tidak ditemukan di server ini." Ada saran tentang cara memperbaiki masalah ini?
Raj Pawan Gumdal
1
Arigato gozaimasu Ajinkya sensei. ARIGATO !!!
TheEYL
6

Saya sarankan Anda membaca Menciptakan sumber daya untuk Layanan 3.x .

Juga, saya perhatikan yakin apakah Layanan dan RESTWS kompatibel; mereka berdua menawarkan variasi hal yang sama, dan karena itu dapat bertentangan.

Blake Senftner
sumber
Saya ingin tahu apa yang harus saya berikan di jalur titik akhir di opsi tambah layanan di drupal 7
sridhar
dan apakah saya harus menulis kode khusus dalam drupal untuk membuat simpul dari aplikasi php saya?
sridhar
Layanan telah membangun sumber daya yang dapat digunakan. tentang RestWS dan kompatibilitas: Ada port RestWS ke Layanan yang ditolak oleh pengelola RestWS. Jika ada yang tertarik bisa diterbitkan sebagai modul terpisah.
VoxPelli