Creación de custom services

June 18, 2021

Los web services es una manera en la que podemos proveer de información a un dispositivo a través de una conección a internet, como por ejemplo, una lista de contenidos, entidades, usuarios, entre otros.

En Drupal podemos encontrar el modulo de Services el cual nos permite realizar estos servicios, como lo explicamos en este blog Creando contenido con Rest Services

En esta ocasión vamos a crear un modulo custom, al que le definiremos un servicio para devolver un listado de usuarios.

rootstack_services_custom.info

 
name = Rootstack Custom services
description = My custom Rootstack Drupal module service.
package = Rootstack
core = 7.x
dependencies[] = services
dependencies[] = rest_server

rootstack_services_custom.module

 
/**
 * Implements hook_permission().
 */
function rootstack_services_custom_permission() {
  return array(
    'rootstack get users' => array(
      'title' => t('Retrieve a list of users.'),
    ),
  );
}

rootstack_services_custom.services.inc

 
/**
 * Implementation of hook_services_resources().
 */
function rootstack_services_custom_services_resources() {
  return array(
    'rootstack_services_users' => array(
      'retrieve' => array(
        'file' => array(
          'type' => 'inc',
          'module' => 'rootstack_services_custom',
          'name' => 'rootstack_services_custom.resources',
        ),
        'help' => t('Gets a count of users.'),
        'callback' => 'rootstack_services_custom_get_user',
        'args' => array(
          array(
            'name' => 'uid',
            'type' => 'string',
            'optional' => TRUE,
            'source' => array('param' => 'uid'),
            'description' => t('User ID.'),
          ),
        ),
        'access arguments' => array('rootstack get users'),
      ),
    ),
  );
}

rootstack_services_custom.resources.inc

 
/**
 * Callback function for retrieve list of users.
 */
function rootstack_services_custom_get_user($uid) {
  $query = db_select('users', 'f');
  $query->fields('f', array('name', 'mail'));
  if ($uid) {
    $query->condition('f.uid', $uid, '=');
  }
  return $query->execute()->fetchAll();
}

Configuraciones desde interface:

  • Activar el modulo(admin/modules)
  • Asignar los permisos(admin/people/permissions)
  • Generar el servicio, el cual se puede realizar desde la interface(admin/structure/services)
  • Desde la pestaña de Recursos, seleccionamos el recurso creado.

Conclusión

La creación de servicios es muy útil y sencilla de realizar, no solo nos permite consultar a la base de datos, sino tambien a las indexaciones de Solr, al igual que nos permite tener control de permisos de cada servicio creado.