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
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:
Créez un point de terminaison appelé 'repos' comme indiqué ci-dessous:
Sélectionnez le type de serveur et le chemin du point de terminaison:
Sélectionnez la liste des ressources que vous souhaitez activer et spécifiez des alias:
Sélectionnez les formateurs de réponse et les analyseurs de requête que vous souhaitez activer:
Vous pouvez tester votre configuration comme indiqué ci-dessous:
Vous pouvez obtenir la liste de tous les nœuds comme ci-dessous:
Et un nœud spécifique comme:
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);
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.