it-swarm.it

Come creare test_endpoint?

Sono nuovo di drupal e sto usando il modulo servizi per l'utilizzo di REST e il modulo RESTWS. Ho usato RESTWS e ho potuto ottenere il contenuto del nodo da - http: //base_url/node/1.xml e ora ho bisogno di aggiungere un nodo e gli utenti dalla mia applicazione esterna PHP a drupal. Ho cercato su Google e ho trovato qui che dobbiamo usare http: // base_drupal_url/drupal7/test_endpoint/users . Ho provato a creare un servizio da Drupal 7, ma non so cosa dovrei dare il titolo dell'endpoint, il nome e il percorso dell'endpoint e presumo che sia necessario fornire lo stesso percorso dell'endpoint nel ricciolo.

Qualsiasi aiuto su come verificare se il server di riposo è installato e su come creare il percorso dell'endpoint sarebbe di grande aiuto.

Sto usando Drupal 7 con modulo servizi services-7.x-3.0-rc3

28
sridhar

Il modulo Servizi è facile da usare, ma può essere complicato da configurare soprattutto se non si conosce il concetto. Quindi, pubblicherò le schermate per semplificare la configurazione dei moduli dei servizi per gli utenti di "Drupal Answers".

Di seguito è riportata la versione del modulo Servizi installato sul mio computer:

enter image description here

Crea un endpoint chiamato 'resto' come mostrato di seguito:

enter image description here

Seleziona il tipo di server e il percorso dell'endpoint:

enter image description here

Seleziona l'elenco delle risorse che vuoi abilitare e specifica gli alias:

enter image description here

Seleziona i formatter di risposta e richiedi i parser che vuoi abilitare:

enter image description here

Puoi testare la tua configurazione come mostrato di seguito:

enter image description here

È possibile ottenere l'elenco di tutti i nodi come di seguito:

enter image description here

E nodo specifico come:

enter image description here

Di seguito sono riportati gli eccellenti esempi di script forniti da MichaelCole qui http://drupal.org/node/910598#comment-4677738 per creare nodi da qualsiasi esterno PHP applicazione.

Sto duplicando il suo codice per completezza di questa risposta.

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

Ti suggerisco di leggere Creazione di una risorsa per Servizi 3.x .

Inoltre, sono sicuro che i servizi e RESTWS sono compatibili; entrambi offrono variazioni della stessa cosa e come tali possono essere in conflitto.

6
Blake Senftner