Mô-đun dịch vụ rất dễ sử dụng, nhưng có thể khó cấu hình, đặc biệt nếu bạn chưa quen với khái niệm này. Vì vậy, tôi sẽ đăng ảnh chụp màn hình để dễ dàng cấu hình các mô-đun Dịch vụ cho người dùng "Câu trả lời Drupal".
Sau đây là phiên bản mô-đun Dịch vụ được cài đặt trên máy của tôi:
Tạo một điểm cuối gọi là 'phần còn lại' như hiển thị bên dưới:
Chọn loại máy chủ và đường dẫn điểm cuối:
Chọn danh sách các tài nguyên mà bạn muốn kích hoạt và chỉ định bí danh:
Chọn trình định dạng phản hồi và yêu cầu trình phân tích cú pháp mà bạn muốn bật:
Bạn có thể kiểm tra cấu hình của mình như hình dưới đây:
Bạn có thể lấy danh sách tất cả các nút như dưới đây:
Và nút cụ thể như:
Sau đây là các kịch bản ví dụ tuyệt vời được cung cấp bởi MichaelCole tại đây http://drupal.org/node/910598#comment-4677738 để tạo các nút từ bất kỳ ứng dụng PHP bên ngoài nào.
Tôi đang sao chép mã của anh ấy để hoàn thành câu trả lời này.
//--------------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);