Drupal 10 ha dado un salto respecto a versiones anteriores, facilitando la creación y personalización de APIs modernas y seguras. En un entorno donde la demanda de integraciones entre plataformas, aplicaciones móviles y frontends desacoplados sigue creciendo, conocer a fondo cómo construir una API REST en este CMS es fundamental para cualquier desarrollador. Aquí te presento una guía completa, desglosando los principales conceptos y pasos, integrando lo mejor de los métodos actuales y las buenas prácticas reales de proyectos exitosos.
Si estás buscando crear una API en Drupal 10, ya sea para exponer contenido, interactuar con usuarios o conectar servicios externos, este artículo te servirá como hoja de ruta para que consigas una implementación robusta, escalable y segura. Vamos a repasar desde los requisitos previos y la instalación de módulos hasta la puesta en marcha y aseguramiento de tus endpoints, todo ello con ejemplos, recomendaciones e información práctica para que no te quedes atascado en ningún paso.
¿Qué es una API REST, y por qué Drupal es una gran opción para crearlas?
Una API REST es una interfaz que permite que aplicaciones externas interactúen con los datos y funcionalidades de tu plataforma utilizando el protocolo HTTP. REST (Representational State Transfer) se fundamenta en principios de arquitectura sin estado, separación de cliente y servidor y manejo de operaciones estándar como GET, POST, PUT, PATCH y DELETE. Las respuestas suelen enviarse en JSON o XML, aunque el formato preferido hoy es JSON por su ligereza y universalidad.
¿Por qué recurrir a Drupal para gestionar una API? Porque ofrece un sistema robusto de permisos y roles, un core preparado para exponer datos de manera estructurada y un ecosistema de módulos diseñados específicamente para crear, personalizar y securizar servicios web. Todo esto se traduce en facilidad de integración, independencia de plataformas, escalabilidad y mantenimiento simplificado.
Principales ventajas de usar APIs REST en Drupal 10
- Independencia tecnológica: Puedes consumir tus datos en cualquier lenguaje o framework (Angular, React, Vue, IONIC, aplicaciones móviles, etc.), ya que todo se transmite en formatos estándar como JSON.
- Separación clara de capas: Tu frontend, backend y almacenamiento pueden evolucionar de manera independiente, lo que permite migraciones y cambios sin afectar a los consumidores de la API.
- Escalabilidad: Al tratarse de arquitectura sin estado, tus APIs pueden atender mayor número de solicitudes sin sobrecargar el servidor, facilitando el crecimiento del sistema.
- Mantenimiento y testeo sencillo: El aislamiento por endpoint y la gestión granular de permisos hacen que encontrar y corregir errores sea más ágil.
- Versionado y flexibilidad: Es sencillo introducir nuevas versiones de la API sin romper la compatibilidad con aplicaciones existentes.
¿Qué módulos necesitas en Drupal 10 para crear tu API?
Drupal, desde la versión 8, integra en su núcleo los módulos esenciales para construir una API REST completa. Sin embargo, en Drupal 10 los procesos y la compatibilidad han mejorado notablemente. Los principales módulos que necesitas son:
- RESTful Web Services (rest): Permite la exposición de entidades y operaciones CRUD siguiendo el estándar REST.
- Serialization: Gestiona la serialización de entidades a JSON o XML.
- HAL: Ofrece soporte para el formato HAL+JSON, ampliamente utilizado en APIs modernas.
- HTTP Basic Authentication (basic_auth): Habilita autenticación básica para proteger tus endpoints.
- REST UI (opcional): Una interfaz gráfica para configurar endpoints de forma cómoda.
Para instalar estos módulos, puedes utilizar tanto la interfaz gráfica de Drupal como la herramienta Drush desde la línea de comandos:
drush en rest serialization hal basic_auth
En muchos casos, estos módulos ya vienen activos en instalaciones estándar de Drupal 10, pero nunca está de más comprobarlo y activarlos si es necesario.
Creación y configuración básica de tu primera API REST en Drupal 10
1. Instala Drupal y prepara el entorno
- Utiliza Composer para crear un proyecto base y añade Drush si quieres administrar Drupal de manera más ágil.
- Ejemplo de instalación:
composer create-project drupal/recommended-project drupal-api-test
cd drupal-api-test
composer require drush/drush
drush site:install -y
drush uli
2. Genera contenido de prueba
- Para probar tu API, necesitas algo de contenido. Puedes crear tipos de contenido (por ejemplo, “Articulo” o “Tarea”) y añadir unos cuantos registros de forma manual o automática usando módulos como devel y devel_generate.
composer require --dev drupal/devel
drush en devel devel_generate
drush genc 20 --bundles=article
3. Activa los módulos y prepara la configuración REST
- Desde la interfaz de administración, ve a Extender y activa los módulos necesarios.
- En “Extender” busca la sección “Servicios web”. Activa RESTful Web Services, HAL, Serialization y Basic Auth.
TIP: HAL es opcional si solo vas a usar JSON, pero muchos proyectos usan este formato por defecto.
4. Crea el endpoint con las vistas de Drupal
Drupal Views es la herramienta clave para exponer tus datos como API sin escribir ni una sola línea de código. Crea una nueva vista:
- Ve a Estructura → Vistas → Añadir vista.
- Ponle un nombre (ejemplo: ArtículosAPI).
- Elige el tipo de contenido a mostrar (por ejemplo, “Article” o tu custom content type).
- Activa la opción “Proveer exportación REST” y define una ruta, por ejemplo, /api/v1/articles.
Este endpoint será accesible para listar los artículos (o el contenido que quieras mostrar).
Configura el formato de salida: En la vista, selecciona el formato de respuesta deseado (hal_json, json, xml). Puedes permitir varios.
Personaliza la información que expones: Modifica el ajuste “Mostrar” y marca “Campos”. Así puedes elegir exactamente qué campos exponer (title, body, fecha, autor, etc.), mejorando el rendimiento y la privacidad.
Cómo asegurar tu API REST: autenticación y permisos
Proteger tu API es imprescindible. Drupal te permite restringir el acceso mediante autenticación básica, roles o permisos granulares. Los métodos de autenticación más usados son:
- Basic Auth: Sencillo de implementar, ideal para entornos controlados o desarrollo.
- OAuth2 o JWT: Más robustos, recomendados para producciones abiertas al público.
Para activar Basic Auth:
- En la configuración de la vista (apartado “Ajustes de ruta”), selecciona “basic_auth” en la sección de autenticación.
- Configura el acceso por roles, eligiendo “Usuario autenticado” para que solo usuarios logueados puedan consumir la API.
No olvides ajustar los permisos de los roles en: Personas → Roles → Editar permisos. Así podrás definir quién puede crear, modificar o eliminar contenidos vía la API.
Probando tu API REST de Drupal 10
Herramientas como Postman o cURL te permiten comprobar el funcionamiento de tus endpoints:
- GET: Consulta de recursos (listado o elemento individual).
- POST: Creación de nuevos registros.
- PATCH/PUT: Actualización parcial o total de registros existentes.
- DELETE: Eliminación de registros.
Algunas rutas de ejemplo:
- GET /api/v1/articles: Devuelve el listado de artículos en formato JSON.
- GET /api/v1/articles/3: Devuelve el artículo con ID 3.
- POST /entity/node: Permite crear un nuevo nodo enviando los datos en el body de la petición. Normalmente requiere autenticación y token CSRF.
Cabeceras importantes para la seguridad y formato:
- X-CSRF-Token: Necesaria para operaciones sensibles (POST, PATCH, DELETE) para evitar ataques CSRF.
- Authorization: Envía las credenciales codificadas en base64 para Basic Auth. Ejemplo: Authorization: Basic dXNlcjp1c2VycGFzcw==
- Content-Type: Especifica el formato del payload, por ejemplo, application/hal+json o application/json.
Personalización y ampliación: crea tus propios recursos REST en Drupal 10
Drupal permite ir mucho más allá de exponer contenido básico. Puedes crear tus propios recursos REST personalizados desarrollando módulos a medida. Este enfoque se utiliza para operaciones avanzadas o lógica de negocio específica, como registrar nuevos usuarios, gestionar login/logout o modificar datos complejos.
Pasos para crear un módulo REST personalizado:
- Crea un módulo custom: Añade el archivo info.yml y estructura la carpeta “src/Plugin/rest/resource”.
- Desarrolla los plugins: Cada operación (registro, login, edición de usuario, etc.) se implementa en un archivo PHP separado.
- Ejemplo real: Para gestionar usuarios puedes crear:
- UserRegistrationRest.php (registro)
- UserLoginRest.php (inicio de sesión)
- UserAccountRest.php (lectura y edición de detalles)
- UserLogoutRest.php (logout)
- Activa el módulo y configura la interfaz REST UI para gestionar fácilmente los endpoints desde el backoffice.
- Gestiona los permisos de acceso para cada uno de los endpoints, permitiendo un control granular.
Consejo: Este tipo de ampliaciones son especialmente útiles cuando tu lógica de negocio no encaja con las funciones estándar de los módulos existentes, o necesitas extender la API con rutas y comportamientos propios.
Módulo Services: una alternativa para proyectos con Drupal 7-8
Aunque en Drupal 10 rara vez se usa, el módulo Services ha sido durante años el estándar para crear APIs REST en versiones anteriores. Permite la exposición de endpoints para entidades core y es extensible mediante hooks. Sus principales características:
- Ofrece endpoints para comentarios, nodos, usuarios, taxonomía, etc.
- Puede configurarse para aceptar peticiones en JSON, XML o formatos menos usuales.
- Soporta autenticación básica o mediante OAuth.
Hoy en día, salvo casos heredados, es preferible usar los módulos del core de Drupal 10.
API y gestión documental: Drupal 10 como backend de portales desarrolladores
Una de las aplicaciones más potentes es aprovechar Drupal como entorno para construir portales de desarrolladores donde se muestran APIs, documentación y recursos. Proyectos como Apigee ofrecen distribuciones y módulos específicos para acelerar la creación de este tipo de portales, permitiendo:
- Publicar documentación de APIs en base a OpenAPI y SmartDocs.
- Personalizar la apariencia y funcionalidades para adaptarlas a la marca y necesidades empresariales.
- Integrar foros, blogs y comunidades para desarrolladores.
- Escoger libremente el proveedor de hosting (Pantheon, Acquia, etc.).
Este enfoque es ideal para empresas que quieren facilitar el consumo de sus APIs y fomentar el desarrollo de ecosistemas alrededor de sus productos.
Consejos y mejores prácticas para APIs eficientes y seguras en Drupal 10
- Versiona tus endpoints: Incluye la versión en la ruta (ejemplo: /api/v1/resource) para mantener la compatibilidad en el futuro.
- Restringe los campos expuestos: No muestres más datos de los estrictamente necesarios en la respuesta; protege especialmente los datos sensibles.
- Configura correctamente los permisos de usuario: Usa roles específicos para consumo de API y revisa los permisos tras cada cambio en la estructura de datos o endpoints.
- Monitoriza y limita el acceso: Considera implementar rate-limiting y logs de actividad para proteger tu API de abusos y detectar ataques.
- Documenta la API: Facilita a los desarrolladores externos (o a tu propio equipo) la integración, publicando documentación clara, ejemplos de peticiones y respuestas, y requisitos de autenticación.
Crear una API REST en Drupal 10 es un proceso más accesible que nunca, pero requiere atención a la seguridad, el rendimiento y la experiencia de quienes consumirán tus servicios. Desde la generación del contenido y activación de los módulos core hasta la exposición de endpoints personalizados y el control de permisos, Drupal proporciona las herramientas necesarias para lanzar soluciones potentes, seguras y fácilmente integrables. Aprovechando las mejores prácticas y las opciones de personalización, puedes transformar Drupal no solo en un CMS sino en un backend moderno preparado para cualquier integración, ya sea interna o con terceros.
Comentarios