Creación de custom services

June 18, 2021

Share

Table of contents

Quick Access

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 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.