web-dev-qa-db-fra.com

Comment créer un point de terminaison de test?

Je suis nouveau sur drupal et j'utilise le module services pour utiliser REST et module RESTWS. J'ai utilisé RESTWS et j'ai pu obtenir le contenu du nœud par - http: //base_url/node/1.xml et maintenant je dois ajouter un nœud et des utilisateurs de mon application externe PHP dans drupal. J'ai googlé et j'ai trouvé ici que nous devons utiliser http: // base_drupal_url/drupal7/test_endpoint/users . J'ai essayé de créer un service à partir de Drupal 7, mais je ne sais pas quoi devrais-je donner le titre, le nom et le chemin du point de terminaison et je suppose que je dois donner le même chemin de point de terminaison dans la boucle.

Toute aide sur la façon de vérifier si le serveur de repos est installé et sur la façon de créer le chemin du point de terminaison serait d'une grande aide.

J'utilise Drupal 7 avec le module de services services-7.x-3.0-rc3

28
sridhar

Le module de services est facile à utiliser, mais il peut être difficile à configurer, surtout si vous êtes nouveau dans le concept. Je vais donc publier les captures d'écran pour rendre la configuration des modules Services facile pour les utilisateurs de "Drupal Answers".

Voici la version du module Services installé sur ma machine:

enter image description here

Créez un point de terminaison appelé 'repos' comme indiqué ci-dessous:

enter image description here

Sélectionnez le type de serveur et le chemin du point de terminaison:

enter image description here

Sélectionnez la liste des ressources que vous souhaitez activer et spécifiez des alias:

enter image description here

Sélectionnez les formateurs de réponse et les analyseurs de requête que vous souhaitez activer:

enter image description here

Vous pouvez tester votre configuration comme indiqué ci-dessous:

enter image description here

Vous pouvez obtenir la liste de tous les nœuds comme ci-dessous:

enter image description here

Et un nœud spécifique comme:

enter image description here

Voici les excellents exemples de scripts fournis par MichaelCole ici http://drupal.org/node/910598#comment-4677738 pour créer des nœuds à partir de tout PHP externe application.

Je reproduis son code pour l'exhaustivité de cette réponse.

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

Je vous suggère de lire Création d'une ressource pour les services 3.x .

De plus, je suis sûr que les services et RESTWS sont compatibles; ils offrent tous deux des variantes de la même chose, et en tant que tels peuvent entrer en conflit.

6
Blake Senftner