
Creando un REST API con Drupal Services
Tabla de contenido

En muchos escenarios, es necesario intercambiar información entre aplicaciones mediante el uso de un API, lo cual por lo general requiere un esfuerzo considerable de desarrollo. Este objetivo puede lograrse fácilmente con el uso del módulo Services para Drupal.
Módulo Services
El módulo Services ofrece, por defecto, un conjunto de endpoints para varias entidades de Drupal, como:
- Comentarios:
/comment
- Archivos:
/file
- Nodos:
/node
- Taxonomías:
/taxonomy_term
y/taxonomy_vocabulary
- Usuarios:
/user
Además, el módulo permite extender estos endpoints con hooks, como hook_services_resources
, para agregar nuevas rutas.
Instalación
Para instalar Services, sigue estos pasos:
- Descarga el módulo desde Drupal Services.
- Instálalo en tu carpeta de módulos, que puede ser
sites/all/modules
osites/all/modules/contrib
.
Una vez descargado e instalado, habilita el módulo Services y REST Server desde la interfaz administrativa de Drupal.
Instalación con Drush
Si prefieres usar Drush, puedes simplificar el proceso con los siguientes comandos:
Configuración
Servidores y REST Server
El módulo Services trabaja con el concepto de servidores. Por defecto, incluye un servidor llamado REST Server, que es el que usaremos en este caso.
- Ve a Estructura > Services y crea un nuevo servicio.
- Machine Name: Asigna un nombre a tu servicio.
- Server: Selecciona REST Server.
- Path to endpoint: Define la ruta al servicio.
Para editar el servicio, ve a Estructura > Services y haz clic en Editar recursos.
En esta sección, habilita los recursos que deseas usar. Por ejemplo, para probar con node, habilita index y retrieve.
Formatos de respuesta
En la pestaña de SERVER, puedes configurar los formatos aceptados y de respuesta. Las opciones disponibles son:
- Bencode
- JSON
- JSONP
- PHP
- XML
Probando el API
Para asegurarte de que todo está funcionando correctamente, puedes hacer una solicitud de prueba al servicio test
a la URL http://localhost/test
. Esta debería devolver el mensaje:
"Services Endpoint 'test' has been setup successfully."
Endpoint de Node: Index
Ya deberías poder obtener la lista de nodos mediante el endpoint test/node
. Si quieres especificar el formato de la respuesta, simplemente agrega la extensión correspondiente, como en:
Endpoint de Node: Retrieve
También es posible obtener un nodo específico usando el endpoint test/node/id
.
Seguridad
El módulo Services permite implementar autenticación básica o autenticación OAuth. En este caso, vamos a configurar la autenticación básica.
Habilitar la autenticación básica
Descarga y habilita el módulo services_basic_auth.
En la configuración de tu servicio, ve a la pestaña de EDIT y marca la opción HTTP basic authentication.
Autenticación básica
Una vez habilitada la autenticación básica, cuando un usuario haga una solicitud, el usuario de Drupal correspondiente se cargará y podrá ejecutar acciones que requieran permisos específicos.
Generar el token de autenticación
Para autenticarse, debes agregar el header Authorization: Basic {token}
. El token se genera codificando 'username:password'
en base64.
Por ejemplo, si el usuario es test y la contraseña es passw0rd, el token será:
El header será:
Probando la autenticación
Petición sin autenticar
Si realizas una solicitud sin autenticar, el sistema devolverá un error, como se muestra en la imagen:
Petición autenticada
Si realizas la misma solicitud pero autenticado, se devolverá la respuesta esperada.
Con estos pasos, has creado y configurado un API REST utilizando el módulo Services en Drupal, habilitado autenticación básica, y probado su funcionalidad.