Wie schreibe ich ein Servicemodul für Drupal 7 und Services 3.x?

11

Kann jemand bitte Anweisungen zum Schreiben eines einfachen Servicemoduls für Services 3.x und Drupal 7.x geben? Ich kann einfach keine finden, die mit D7 funktioniert. Etwas! Nur eine überarbeitete Version des echo_service-Moduls würde ausreichen!

Bitte verlinken Sie zumindest auf ein Arbeitsbeispiel. Vielen Dank.

user968416
quelle
Der obige Link ist ein anständiges Beispiel für alle, die suchen.
user968416
Dieser IBM Artikel hat mir sehr geholfen bei meinem ibm.com/developerworks/opensource/library/…
cayerdis

Antworten:

5

Zusätzlich zu dem erwähnten Link gibt es hier einen Code aus einem Modul, das ich geschrieben habe und das Webservices verwendet. Unter "Struktur" sollte der Dienst aktiviert und ein Endpunkt definiert werden. Dort legen Sie auch die zulässigen Rückgabetypen fest.

Wenn Sie also 'api' als Endpunkt definieren und ein JSON-Array wünschen, würden Sie eine Anfrage wie Ihre Website.com/api/servicename/arg1/arg2.json stellen. Sie definieren den Dienstnamen in hook_services_resources.

<?php

// $Id$
/* * **********************************************************************************************
 * @file
 * Based on the RESTful API shell module http://drupal.org/node/1034540
 */

/* * *************************************************************************************************
 * Include necessary files
 */
require_once (drupal_get_path('module', 'graph_data_api') . '/model/highchart_graph.php');

/* * *************************************************************************************************
 * Implementation of hook_help().
 * @see http://api.drupal.org/api/function/hook_help/6
 */

function graph_data_api_help($path, $arg) {
  $msg = t('<p>Provides a API for graph data for use with Highcharts.</p>');
  switch ($path) {
    case 'admin/help#graph_data_api':
      return $msg;
    case 'admin/modules#description':
      return $msg;
  }
}

/* * *************************************************************************************************
 * Implementation of hook_disable()
 * @see http://api.drupal.org/api/function/hook_disable/6
 */

function graph_data_api_disable() {
  cache_clear_all('services:methods', 'cache');
  //eco_debug( '*** graph_data_api_disable() called!' );
}

/* * *************************************************************************************************
 * Implementation of hook_enable()
 * @see http://api.drupal.org/api/function/hook_enable/6
 */

function graph_data_api_enable() {
  cache_clear_all('services:methods', 'cache');
  //eco_debug( '*** graph_data_api_enable() called!' );
}

/* * *************************************************************************************************
 * Implementation of hook_perm().
 * @see http://api.drupal.org/api/function/hook_perm/6
 */

function graph_data_api_permission() {
  return array(
      'request graph data' => array(
          'title' => t('Request graph data'),
          'description' => t('Allows user to use the graph api for Highchart graphs'),
      ),
  );
}

/* * *************************************************************************************************
 * Access callback 
 * For now only view/retrieve is implemented and if the user is logged in, he gets access
 */

function _graph_data_api_graphdata_access($op) {
  global $user;
  $access = FALSE;

  switch ($op) {
    case 'view':
      if ($user->uid) {
        $access = TRUE;
      }
      break;
  }

  return $access;
}

/* * *************************************************************************************************
 * Implementation of hook_services_resources().
 * For now only retrieve with a GET request is implemented
 */

function graph_data_api_services_resources() {
  return array(
      'graphdata' => array(
          'retrieve' => array('help' => 'Retrieves graphdata',
              'callback' => '_graph_data_api_graphdata_retrieve',
              'access callback' => '_graph_data_api_graphdata_access',
              'access arguments' => array('view'),
              'access arguments append' => FALSE,
              'args' => array(
                  array('name' => 'parameters',
                      'type' => 'string',
                      'description' => 'The parameters that define requested data',
                      'source' => array('path' => '0'), // first argument in the url 
                      'optional' => FALSE,
                  ),
              ),
          ),
      ),
  );
}

/* * *************************************************************************************************
 * Callback for the retrieve resource
 */

function _graph_data_api_graphdata_retrieve($arg) {

  $data = 'hello world';
  return $data;
}
Whiskey
quelle
Erwähnenswert ist, dass die Ressourcen alle zwischengespeichert sind und Sie alle Caches manuell löschen müssen (admin / config / development / performance)
jabal