Test_endpoint कैसे बनाये?


29

मैं ड्रुपल के लिए नया हूं और मैं REST और RESTWS मॉड्यूल का उपयोग करने के लिए सेवा मॉड्यूल का उपयोग कर रहा हूं। मैंने RESTWS का उपयोग किया और नोड की सामग्री http: //base_url/node/1.xml द्वारा प्राप्त की जा सकती है और अब मुझे अपने बाहरी PHP अनुप्रयोग से drupal में एक नोड और उपयोगकर्ताओं को जोड़ने की आवश्यकता है। मैंने गुगली की और मैंने पाया कि हमें http: // base_drupal_url / drupal7 / test_endpoint / users का उपयोग करने की आवश्यकता है । मैंने Drupal 7 से एक सेवा बनाने की कोशिश की, लेकिन मुझे नहीं पता कि मुझे समापन बिंदु शीर्षक, नाम और समापन बिंदु पथ पर क्या देना चाहिए और मुझे लगता है कि मुझे कर्ल में समान समापन बिंदु पथ देने की आवश्यकता है।

बाकी सर्वर स्थापित है और कैसे समापन बिंदु पथ बनाने के लिए कैसे की जाँच करने के लिए के रूप में कोई मदद से बहुत मदद मिलेगी।

मैं Drupal 7 का उपयोग सेवा मॉड्यूल सेवाओं-7.x-3.0-rc3 के साथ कर रहा हूं


क्या आपने अपनी समस्या हल कर ली? मैंने आपके जैसे ही एक समापन बिंदु और संसाधन पथ बनाया है, लेकिन मुझे "इस सर्वर पर अनुरोधित URL / ~ DrupalWorkstation / Drupal / drupal_7_16 / बाकी / नोड नहीं मिला है।" त्रुटि। कृपया उच्चतम मतदान जवाब के लिए मेरी टिप्पणी की जाँच करें। अगर आपके पास इसके लिए कोई उपाय है तो मुझे बताएं।
राज पवन गुमडाल

जवाबों:


56

सेवा मॉड्यूल का उपयोग करना आसान है, लेकिन यह विशेष रूप से कॉन्फ़िगर करने के लिए मुश्किल हो सकता है यदि आप अवधारणा के लिए नए हैं। इसलिए, मैं "Drupal उत्तर" उपयोगकर्ताओं के लिए सेवा मॉड्यूल के कॉन्फ़िगरेशन को आसान बनाने के लिए स्क्रीनशॉट पोस्ट करने जा रहा हूं।

मेरी मशीन पर स्थापित सेवा मॉड्यूल का संस्करण निम्नलिखित है:

यहां छवि विवरण दर्ज करें

नीचे दिखाए अनुसार 'आराम' नामक एक समापन बिंदु बनाएँ:

यहां छवि विवरण दर्ज करें

सर्वर और समापन बिंदु पथ का प्रकार चुनें:

यहां छवि विवरण दर्ज करें

उपनामों को सक्षम और निर्दिष्ट करने के लिए इच्छित संसाधनों की सूची का चयन करें:

यहां छवि विवरण दर्ज करें

प्रतिक्रिया फ़ॉर्मेटर्स का चयन करें और उन पार्सरों का अनुरोध करें जिन्हें आप सक्षम करना चाहते हैं:

यहां छवि विवरण दर्ज करें

आप नीचे दिखाए गए अनुसार अपने विन्यास का परीक्षण कर सकते हैं:

यहां छवि विवरण दर्ज करें

आप नीचे दिए गए सभी नोड्स की सूची प्राप्त कर सकते हैं:

यहां छवि विवरण दर्ज करें

और विशिष्ट नोड के रूप में:

यहां छवि विवरण दर्ज करें

माइकलकॉल द्वारा यहां दिए गए उत्कृष्ट उदाहरण स्क्रिप्ट निम्नलिखित हैं 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);

2
तो यह इंगित करने के लायक है कि उसने हर अनुरोध पार्स करने के विकल्प को सक्षम किया है। मैंने यह महसूस करने से पहले बहुत समय बर्बाद किया कि "एप्लिकेशन / x-www-form-urlencoded" डिफ़ॉल्ट रूप से अक्षम है।
20:24

मुझे उपरोक्त कोड स्निपेट कहां लिखना है? क्या यह मॉड्यूल / सेवाओं / सर्वर / rest_server / lib के अंदर है?
सुबोधजीत sub

1
@ उप कोडित777 कोड के ऊपर एक स्टैंड अलोन PHP कोड स्निपेट है जिसका उपयोग बाहरी सर्वर पर होस्ट की जाने वाली सेवाओं एपीआई का उपभोग करने के लिए किया जा सकता है, और आप इसे आप मॉड्यूल फ़ाइल में लिख सकते हैं, लेकिन इसे मॉड्यूल / सेवाओं / सर्वर / rest_server / lib में लिखना संभवत: है सबसे अच्छी जगह नहीं।
अजिंक्य कुलकर्णी

जैसा आपने मेरे लोकलहोस्ट पर कहा था, मैंने सब कुछ सेटअप कर दिया है। मेरे पास अपनी ड्रुपल साइट पर चलने का रास्ता है: लोकलहोस्ट / ~ DrupalWorkstation / Drupal / drupal_7_16 । जब मैं URL से ऊपर हिट करता हूं तो index.php पृष्ठ चल रहा होता है, लेकिन मेरा कॉन्फ़िगर किया गया समापन बिंदु और संसाधन पथ काम नहीं करेगा। सेवा को ट्रिगर करने के लिए मेरा URL है: लोकलहोस्ट / ~ DrupalWorkstation / Drupal / drupal_7_16 / बाकी / नोड । मुझे निम्न त्रुटि मिलती है: "इस सर्वर पर अनुरोधित URL / ~ DrupalWorkstation / Drupal / drupal_7_16 / बाकी / नोड नहीं मिला।" इस समस्या को ठीक करने के बारे में कोई सुझाव?
राज पवन गुमडाल

1
अरिगेटो गूज़िमसु अजिंक्य इंद्रिय। Arigato !!!
theeyL

6

मेरा सुझाव है कि आप सेवाओं 3.x के लिए एक संसाधन बनाना पढ़ें ।

इसके अलावा, यदि सेवा और नियम संगत हैं, तो मुझे यकीन है; वे दोनों एक ही चीज़ के रूपांतर प्रस्तुत करते हैं, और जैसे कि संघर्ष हो सकता है।


मैं यह जानना चाहूंगा कि मुझे ड्रूपल 7 में सेवा जोड़ने के विकल्प में समापन बिंदु पथ में क्या देना चाहिए
श्रीधर

और क्या मुझे अपने php एप्लिकेशन से नोड बनाने के लिए ड्रुपल में कोई कस्टम कोड लिखना चाहिए?
श्रीधर

सेवाओं का उपयोग संसाधनों में किया जाता है जिनका उपयोग किया जा सकता है। रेस्ट्स एंड कॉम्पिटिबिलिटी के बारे में: रेस्ट्स टू सर्विसेज का एक पोर्ट है जिसे रेस्ट्स के रखरखावकर्ताओं ने अस्वीकार कर दिया था। अगर किसी को दिलचस्पी है तो इसे एक अलग मॉड्यूल के रूप में प्रकाशित किया जा सकता है।
वोक्सपेल्ली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.