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.
El módulo Services ofrece, por defecto, un conjunto de endpoints para varias entidades de Drupal, como:
/comment
/file
/node
/taxonomy_term
y /taxonomy_vocabulary
/user
Además, el módulo permite extender estos endpoints con hooks, como hook_services_resources
, para agregar nuevas rutas.
Para instalar Services, sigue estos pasos:
sites/all/modules
o sites/all/modules/contrib
.
Una vez descargado e instalado, habilita el módulo Services y REST Server desde la interfaz administrativa de Drupal.
Si prefieres usar Drush, puedes simplificar el proceso con los siguientes comandos:
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.
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.
En la pestaña de SERVER, puedes configurar los formatos aceptados y de respuesta. Las opciones disponibles son:
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."
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:
También es posible obtener un nodo específico usando el endpoint test/node/id
.
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.
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.
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.
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á:
Si realizas una solicitud sin autenticar, el sistema devolverá un error, como se muestra en la imagen:
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.