จะเขียนโมดูลบริการสำหรับ Drupal 7 และ Services 3.x ได้อย่างไร


11

ใครช่วยกรุณาให้คำแนะนำเกี่ยวกับวิธีการเขียนโมดูลบริการง่ายๆสำหรับ Services 3.x และ Drupal 7.x ฉันไม่พบสิ่งใดที่ทำงานกับ D7 ได้ อะไร! เพียงแค่โมดูล echo_service รุ่นทำใหม่จะทำ!

อย่างน้อยที่สุดโปรดลิงค์ไปยังตัวอย่างการทำงาน ขอบคุณ



ลิงค์ด้านบนเป็นตัวอย่างที่ดีสำหรับผู้ที่กำลังมองหา
user968416

บทความ IBM นี้ช่วยฉันได้มากด้วย mine ibm.com/developerworks/opensource/library/…
cayerdis

คำตอบ:


5

นอกจากลิงค์ที่กล่าวถึงนี่คือรหัสจากโมดูลที่ฉันเขียนซึ่งใช้เว็บเซอร์ ภายใต้ "โครงสร้าง" บริการควรเปิดใช้งานและกำหนดจุดสิ้นสุด คุณยังตั้งค่าประเภทการคืนสินค้าที่อนุญาตได้ที่นั่น

ดังนั้นหากคุณกำหนด 'api' เป็น endpoint และต้องการอาร์เรย์ json คุณจะต้องทำคำขอเช่น yoursite.com/api/servicename/arg1/arg2.json คุณกำหนดชื่อบริการใน 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;
}

เป็นมูลค่าการกล่าวขวัญว่าทรัพยากรทั้งหมดจะถูกเก็บไว้ในแคชและคุณต้องล้างแคชทั้งหมดด้วยตนเอง (admin / config / development / performance)
jabal
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.