it-swarm-eu.dev

Jak vytvořit test_endpoint?

Jsem nový v drupal a používám modul služeb pro použití REST a modul RESTWS). Použil jsem RESTWS a obsah uzlu jsem získal pomocí - http: //base_url/node/1.xml a nyní musím přidat uzel a uživatele z mé externí PHP aplikace do drupalu. Googled a našel jsem zde že potřebujeme použít http: // base_drupal_url/drupal7/test_endpoint/users . Pokusil jsem se vytvořit službu z Drupal 7, ale nevím, co bych měl dát koncovému bodu název, název a cestu koncového bodu a předpokládám, že musím dát stejnou cestu koncového bodu v curl.

Pomohla by jakákoli pomoc s tím, jak zkontrolovat, zda je nainstalován zbytek server a jak vytvořit cestu koncového bodu.

Používám Drupal 7 se službami modulu services-7.x-3.0-rc3

29
sridhar

Modul služeb se snadno používá, ale může být obtížné jej konfigurovat, zejména pokud jste v konceptu nováčci. Takže budu zveřejňovat snímky obrazovky, aby byla konfigurace modulů služeb snadná pro uživatele „Drupal Answers“.

Následuje verze modulu Services nainstalovaného v mém počítači:

enter image description here

Vytvořte koncový bod nazvaný „odpočinek“, jak je uvedeno níže:

enter image description here

Vyberte typ serveru a cestu koncového bodu:

enter image description here

Vyberte seznam zdrojů, které chcete povolit, a zadejte aliasy:

enter image description here

Vyberte formátovače odpovědí a analyzátory požadavků, které chcete povolit:

enter image description here

Svou konfiguraci můžete vyzkoušet, jak je ukázáno níže:

enter image description here

Seznam všech uzlů je uveden níže:

enter image description here

A konkrétní uzel jako:

enter image description here

Níže jsou uvedeny vynikající příklady skriptů poskytnutých MichaelCole zde http://drupal.org/node/910598#comment-4677738 k vytvoření uzlů z jakéhokoli externího PHP aplikace.

Pro úplnost této odpovědi duplikuji jeho kód.

//--------------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

Doporučuji, abyste si přečetli Vytvoření zdroje pro služby 3.x .

Také si uvědomuji, zda jsou Služby a RESTWS kompatibilní; oba nabízejí varianty stejné věci a jako takové mohou být v rozporu.

6
Blake Senftner