Làm thế nào để tạo test_endpoint?


29

Tôi chưa quen với drupal và tôi đang sử dụng mô-đun dịch vụ để sử dụng mô-đun REST và RESTWS. Tôi đã sử dụng RESTWS và có thể lấy nội dung của nút bằng http: //base_url/node/1.xml và bây giờ tôi cần thêm một nút và người dùng từ ứng dụng PHP bên ngoài của mình vào drupal. Tôi đã googled và tôi thấy ở đây rằng chúng ta cần sử dụng http: // base_drupal_url / drupal7 / test_endpoint / users . Tôi đã cố gắng tạo một dịch vụ từ Drupal 7, nhưng tôi không biết tôi nên cung cấp gì cho tiêu đề điểm cuối, tên và đường dẫn điểm cuối và tôi cho rằng tôi cần đưa ra đường dẫn điểm cuối tương tự trong cuộn tròn.

Bất kỳ trợ giúp nào về cách kiểm tra xem máy chủ còn lại đã được cài đặt chưa và cách tạo đường dẫn điểm cuối sẽ giúp ích rất nhiều.

Tôi đang sử dụng Drupal 7 với các dịch vụ mô-đun dịch vụ-7.x-3.0-rc3


bạn đã giải quyết vấn đề chưa? Tôi đã tạo một điểm cuối và đường dẫn tài nguyên chính xác như bạn nhưng tôi nhận được "Không tìm thấy URL được yêu cầu / ~ DrupalWorkstation / Drupal / drupal_7_16 / rest / nút không được tìm thấy trên máy chủ này." lỗi. Vui lòng kiểm tra bình luận của tôi để câu trả lời được bình chọn cao nhất. Hãy cho tôi biết nếu bạn có một giải pháp cho việc này.
Raj Pawan Gumdal

Câu trả lời:


56

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:

nhập mô tả hình ảnh ở đây

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:

nhập mô tả hình ảnh ở đây

Chọn loại máy chủ và đường dẫn điểm cuối:

nhập mô tả hình ảnh ở đây

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:

nhập mô tả hình ảnh ở đây

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:

nhập mô tả hình ảnh ở đây

Bạn có thể kiểm tra cấu hình của mình như hình dưới đây:

nhập mô tả hình ảnh ở đây

Bạn có thể lấy danh sách tất cả các nút như dưới đây:

nhập mô tả hình ảnh ở đây

Và nút cụ thể như:

nhập mô tả hình ảnh ở đây

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

2
Vì vậy, giá trị chỉ ra rằng ông kích hoạt mọi tùy chọn phân tích yêu cầu. Tôi đã lãng phí rất nhiều thời gian trước khi tôi nhận ra rằng "application / x-www-form-urlencoding" bị tắt theo mặc định.
lôi cuốn

Tôi phải viết đoạn mã trên ở đâu? Có phải bên trong các mô-đun / dịch vụ / máy chủ / rest_server / lib?
subhojit777

1
@ subhojit777 ở trên mã là một đoạn mã PHP độc lập có thể được sử dụng để sử dụng dịch vụ api được lưu trữ trên máy chủ bên ngoài và bạn có thể viết nó trong tệp mô-đun của mình, nhưng có thể viết nó trong các mô-đun / dịch vụ / máy chủ / rest_server / lib không phải là nơi tốt nhất
Ajinkya Kulkarni

Tôi đã thiết lập mọi thứ như bạn đã nói trên localhost của tôi. Tôi có một đường dẫn đến trang web drupal của mình đang chạy như: localhost / ~ DrupalWorkstation / Drupal / drupal_7_16 . Trang index.php đang chạy khi tôi nhấn URL phía trên, nhưng đường dẫn tài nguyên và điểm cuối được định cấu hình của tôi sẽ không hoạt động. URL của tôi để kích hoạt dịch vụ là: localhost / ~ DrupalWorkstation / Drupal / drupal_7_16 / rest / node . Tôi nhận được lỗi sau: "Không tìm thấy URL được yêu cầu / ~ DrupalWorkstation / Drupal / drupal_7_16 / rest / nút không được tìm thấy trên máy chủ này." Bất kỳ đề xuất về cách khắc phục vấn đề này?
Raj Pawan Gumdal

1
Arigato gozaimasu Ajinkya sensei. ARIGATO !!!
TheEYL 14/2/2015

6

Tôi đề nghị bạn đọc Tạo tài nguyên cho Dịch vụ 3.x .

Ngoài ra, tôi lưu ý rằng nếu Dịch vụ và RESTWS tương thích; cả hai đều cung cấp các biến thể của cùng một điều, và như vậy có thể xung đột.


Tôi muốn biết những gì tôi nên cung cấp trong đường dẫn điểm cuối trong tùy chọn thêm dịch vụ trong drupal 7
sridhar

và tôi có nên viết bất kỳ mã tùy chỉnh nào trong drupal để tạo một nút từ ứng dụng php của mình không?
sridhar

Dịch vụ đã được xây dựng trong các tài nguyên có thể được sử dụng. liên quan đến RestWS và khả năng tương thích: Có một cổng RestWS đến Dịch vụ đã bị các nhà bảo trì RestWS từ chối. Nếu bất cứ ai quan tâm nó có thể được xuất bản như một mô-đun riêng biệt.
VoxPelli
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.