it-swarm.asia

كيفية إنشاء نقطة نهاية الاختبار؟

أنا جديد على drupal وأستخدم وحدة الخدمات لاستخدام REST و RESTWS الوحدة النمطية. لقد استخدمت RESTWS ويمكنني الحصول على محتوى العقدة عن طريق - http: //base_url/node/1.xml والآن أحتاج إلى إضافة عقدة ومستخدمين من خارجي PHP في دروبال. لقد بحثت في Google ووجدت هنا أننا بحاجة إلى استخدام http: // base_drupal_url/drupal7/test_endpoint/users . حاولت إنشاء خدمة من Drupal 7 ، لكنني لا أعرف ماذا يجب أن أعطي عنوان نقطة النهاية واسمها ومسار نقطة النهاية وأفترض أنني بحاجة إلى إعطاء نفس مسار نقطة النهاية في التجعيد.

أي مساعدة حول كيفية التحقق من تثبيت خادم الراحة وكيفية إنشاء مسار نقطة النهاية ستكون مفيدة للغاية.

أنا أستخدم Drupal 7 with services module services-7.x-3.0-rc3

28
sridhar

وحدة الخدمات سهلة الاستخدام ، ولكن قد يكون من الصعب تكوينها خاصة إذا كنت جديدًا على المفهوم. لذلك ، سأقوم بنشر لقطات الشاشة لتسهيل تكوين وحدات الخدمات لمستخدمي "إجابات دروبال".

فيما يلي إصدار وحدة الخدمات المثبتة على جهازي:

enter image description here

إنشاء نقطة نهاية تسمى "الراحة" كما هو موضح أدناه:

enter image description here

حدد نوع الخادم ومسار نقطة النهاية:

enter image description here

حدد قائمة الموارد التي تريد تمكينها وحدد الأسماء المستعارة:

enter image description here

حدد تنسيقات الاستجابة وطلب المحللون الذين تريد تمكينهم:

enter image description here

يمكنك اختبار التكوين الخاص بك كما هو موضح أدناه:

enter image description here

يمكنك الحصول على قائمة بجميع العقد على النحو التالي:

enter image description here

وعقدة محددة مثل:

enter image description here

فيما يلي الأمثلة الممتازة المقدمة من قبل MichaelCole هنا http://drupal.org/node/910598#comment-4677738 لإنشاء عقد من أي خارجي PHP.

أنا أكرر رمزه لاستكمال هذه الإجابة.

//--------------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);
56
Ajinkya Kulkarni

أقترح عليك قراءة إنشاء مورد للخدمات 3.x .

أيضًا ، أنا متأكد من أن الخدمات و RESTWS متوافقة ؛ كلاهما يقدم اختلافات في نفس الشيء ، وعلى هذا النحو قد يتعارض.

6
Blake Senftner