Drupal 7 ve Services 3.x için bir servis modülü nasıl yazılır?


11

Birisi lütfen Services 3.x ve Drupal 7.x için basit bir servis modülünün nasıl yazıldığına dair talimatlar verebilir mi? D7 ile çalışan herhangi bir şey bulamıyorum. Herhangi bir şey! Sadece echo_service modülünün elden geçirilmiş bir versiyonu yapardı!

En azından lütfen çalışan bir örneğe bağlantı verin. Teşekkürler.



Yukarıdaki bağlantı, arayan herkes için iyi bir örnektir.
user968416

Bu IBM makalesi bana mine ile çok yardımcı oldu ibm.com/developerworks/opensource/library/…
cayerdis

Yanıtlar:


5

Bahsedilen bağlantıya ek olarak, yazdığım bir modülün web servislerini kullanan bazı kodları. "Yapı" altında hizmet etkinleştirilmeli ve bir uç nokta tanımlanmalıdır. Burada izin verilen dönüş türlerini de ayarlayabilirsiniz.

Dolayısıyla, 'api' yi bitiş noktası olarak tanımlar ve bir json dizisi istiyorsanız, siteniz.com/api/servicename/arg1/arg2.json gibi bir istekte bulunursunuz. Hizmet adını hook_services_resources içinde tanımlarsınız.

<?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;
}

Kaynakların hepsinin önbelleğe alındığını ve tüm önbellekleri manuel olarak temizlemeniz gerektiğini belirtmeye değer (admin / config / development / performance)
jabal
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.