Poster Service
REST Service Implementation für Drupalgap(jDrupal)
Drupalgap REST Service Beispiel (Services API 3.0)
poster.info:
name = poster description = Awri Mobile Poster Modul package = custom core = 7.x dependencies[]=services dependencies[] = rest_server project = "custom" datestamp = "1398963366"
poster.module.inc
function poster_ctools_plugin_api($owner, $api) { if ($owner == 'services' && $api == 'services') { return array( 'version' => 3, 'file' => 'poster.services.inc' ); } }
poster.resource.inc
//Parameterübergabe in PHP //$/data[0]=array("uid"=>"3"); //$data[1]=array{"message"=>"Ich habe ne Frage"); function post_anonymous($data) { watchdog("poster", '<pre>' . print_r( $data, true) . '</pre>'); return $data[0]['uid'].' -> '.$data[1]['message']; }
poster.services.inc:
function poster_services_resources() { $resources = array( 'poster_resources' => array( 'actions' => array( //->Add endpoint 'post_anonymous' => array( 'help' => t('Der Endpunkt nimmmt eine anonyme Rechtsfrage an'), 'file' => array( 'type' => 'inc', 'module' => 'poster', 'name' => 'poster.resource', ), 'callback' => 'post_anonymous', 'args' => array( array( 'name' => 'uid', 'type' => 'string', 'description' => t('The uid to send.'), 'source' => 'data', 'optional' => FALSE, ), array( 'name' => 'message', 'type' => 'string', 'description' => t('The message to post.'), 'source' => 'data', 'optional' => FALSE, ) ), //collback args array 'access callback' => '_drupalgap_resource_access', 'access callback file' => array( 'type' => 'inc', 'module' => 'drupalgap', 'name' => 'drupalgap.resource', ), 'access arguments' => array('access content'), 'access arguments append' => TRUE, )//post_anoymous endpoint //->Add endpoint ),//actions ),//poster_resources );//resurces return $resources; }
Service Client (jDrupal)
1. Cient Aufruf mit JDrupal
var my_params = [ { 'uid' : '3' }, { 'message' : 'Ich habe ne Frage' } ]; Drupal.services.call({ method : 'POST', path : 'poster_resources/post_anonymous.json', service : 'poster', resource : 'post_anonymous', data : JSON.stringify(my_params), success : function(result) { console.log(result); var response = result; var msg = 'Poster direct call: ' + response + ' !'; drupalgap_alert(msg); } });
2. Cient Aufruf mit JDrupal
/ Aufruf über eine Funktion muss selbst in einer funktion sein var my_params = [ { 'uid' : '100000611529195' }, { 'message' : 'HLLLLAOO' } ]; awri_postit({ success : function(result) { var user_count = result[0]; var msg = 'Poster function: ' + user_count + ' !' drupalgap_alert(msg); } }, my_params); } function awri_postit(options, my_params) { try { console.log(my_params); options.method = 'POST'; options.path = 'poster_resources/post_anonymous.json'; options.service = 'poster'; options.resource = 'post_anonymous'; options.data = JSON.stringify(my_params); Drupal.services.call(options); } catch (error) { console.log('poster_resources/post_anonymous - ' + error); } }
Drupal Service Debug
In den Service Funktionen die Daten in den Watchdog schreiben:
drush watchdog("poster", '' . print_r( $data, true) . '');
Daten in Echtzeit ansehen:
drush watchdog-show --tail --sleep-delay=2