Drupal desacoplado: ¿qué se debe considerar al usar JSON: API?
Publicado: 2018-09-12"La ventaja más convincente de Drupal con API primero no es la forma en que niega las funciones de presentación de Drupal, es la forma en que habilita las capacidades del CMS para alimentar múltiples aplicaciones y dispositivos". - Jason Enter, Gerente de Servicios Técnicos, Acquia.
La relación entre contenido y código ya no es saludable. La capa de presentación orientada al consumidor no está tan eliminada de la capa del editor de contenido, como solía ser, principalmente debido a las nuevas experiencias interactivas que se brindan a los consumidores a través de aplicaciones.
Los marcos y lenguajes de programación modernos permiten flexibilidad en la formación de su pila de administración de contenido. Por lo tanto, desvincular el contenido del código se ha convertido en una práctica común en los últimos años y Drupal fue uno de los primeros en adoptar el mismo. Aprendamos más sobre la arquitectura desacoplada de Drupal desacoplado y Drupal 8.
¿Qué es Drupal desacoplado?
Bueno, Drupal desacoplado suena "genial", ¿no? Parece que todo el mundo está hablando de ello, por lo que debe ser una solución mejor y más fácil, ¿verdad? Bien quizás. Ofreciendo una amplia gama de beneficios, esta estrategia, también conocida como "drupal sin cabeza", se utiliza para explotar Drupal únicamente como un sistema de gestión de contenido sin una capa de presentación. es decir, solo hay contenido y la interfaz de usuario administrativa, sin los temas de cara al público y las otras plantillas, exponiendo así una API para otras aplicaciones.
Pero quizás la pregunta más importante que tiene en mente sería, ¿cuáles son los beneficios de la arquitectura Drupal desacoplada?
Una arquitectura sin cabeza hace un gran trabajo al reducir o eliminar por completo la mayoría de los problemas que forman parte de los sistemas monolíticos de administración de contenido.
Actualizaciones simplificadas: una arquitectura desacoplada garantiza que una actualización de CMS no afecte la capa de presentación, evitando así que tenga que volver a configurar después de cada actualización de CMS.
Mejor enfoque: una gran ventaja para los desarrolladores, con una arquitectura desacoplada, solo deben preocuparse por configurar su parte de la pila. Los desarrolladores de back-end no necesitan preocuparse por la compilación de CSS y los chicos de front-end no necesitan rascarse la cabeza acerca de las instalaciones del compositor.
Fácil resolución de problemas: una arquitectura sin cabeza está estructurada de tal manera que la plataforma consta de partes más pequeñas y discretas en lugar de una única aplicación gigante. Esto hace que sea mucho más fácil localizar errores y solucionarlos.
Rendimiento mejorado: con ambos equipos trabajando simultáneamente de manera desacoplada, el desarrollo de nuevas funciones puede ocurrir sin problemas sin chocar contra las paredes. Esto, a su vez, mejora el rendimiento general de la plataforma.
Fácil resolución de problemas: una arquitectura sin cabeza está estructurada de tal manera que la plataforma consta de partes más pequeñas y discretas en lugar de una única aplicación gigante. Esto hace que sea mucho más fácil localizar errores y solucionarlos.

¿Qué importancia tiene JSON: API para sitios web Drupal desacoplados?
Las arquitecturas poderosas, las aplicaciones web receptivas y fáciles de usar son el resultado de los marcos de JavaScript, que se han vuelto bastante populares desde su introducción a principios de 2010. Y con un número creciente de personas que optan por usar dispositivos móviles para acceder a contenido digital, creando aplicaciones nativas para un sitio web tiene mucho sentido.
Al darse cuenta de este potencial, Drupal 8 ha agregado el soporte para construir API RESTful en el núcleo. Sin embargo, esto tiene sus propios inconvenientes, ya que los servicios RESTful del núcleo de Drupal no brindan soluciones sólidas listas para usar.
Una implementación tradicional de API REST generalmente se enfrenta cara a cara con un cierto conjunto de problemas:
- Un gráfico de datos completo necesario para construir la vista en el consumidor requerirá demasiadas solicitudes.
- Una gran respuesta inflada que devuelve todos los campos y relaciones de cada entidad.
- Encontrar contenido basado en los atributos de datos de las entidades es una tarea hercúlea.
- Control de versiones de la API para que los consumidores y las implementaciones de back-end puedan iterar por separado.
Para abordar estos problemas, existen varias especificaciones, siendo JSON: API una de las más destacadas.

¿Qué es JSON?
JSON: la notación de objetos de Java Script es uno de los formatos de datos más comunes para el intercambio de datos a través de servicios web. Principalmente reemplazando XML, la naturaleza liviana y fácil de leer de JSON lo hace bastante impresionante.
¿Por qué debería considerar implementar JSON: especificaciones de API?
Un conjunto de estándares y convenciones predefinidos que describen cómo las API deben ser servidas por los servidores y consumidas por los clientes para intercambiar datos en formato JSON, las especificaciones JSON: API ofrecen beneficios clave cuando se implementan:
Eficiencia: Las especificaciones JSON: API están diseñadas de tal manera que mantienen el número de solicitudes y el tamaño de los datos al mínimo.
Productividad: sucede muy a menudo que, como desarrollador, está bastante confundido acerca de las mejores prácticas a seguir al crear una API. Por otro lado, al seguir un conjunto de estándares, se sale del dilema.
Coherencia: las especificaciones ofrecen una estructura y un comportamiento coherentes mientras se consumen para crear aplicaciones.
Soporte: Las especificaciones son ampliamente aceptadas y las implementaciones requeridas para las bibliotecas de cliente se pueden encontrar para casi todos los marcos y lenguajes de programación.
El JSON: Módulo API
El módulo JSON: API para Drupal 8 es una implementación de la especificación JSON: API. Cuando instala y habilita el módulo JSON: API, una API REST está disponible inmediatamente para cada tipo dentro de su implementación de Drupal. Al atravesar tipos de entidad y paquetes de modo que pueda generar URL en las que pueda acceder y manipular entidades, el módulo logra esta hazaña.
Si bien la API JSON es una especificación bastante compleja de manejar, el módulo API JSON hace un gran trabajo al simplificar el proceso de consumo, especialmente para los primeros desarrolladores de Drupal desacoplados.
Sin embargo, siguiendo el enfoque de "menos configuraciones" y preparación de producción desde el primer momento, el módulo JSON: API viene con un conjunto de desventajas propias.
Soporte: El módulo JSON: API está completamente basado en entidades, lo que significa que se centra en los tipos y paquetes de entidades de Drupal. Sin embargo, el módulo no admite ni maneja datos personalizados.
Error de tarea: dado que el módulo está basado en entidades y no puede manejar datos personalizados, tampoco puede realizar otras tareas como iniciar sesión, crear sesiones o cerrar la sesión de un usuario, etc.
Estructura predefinida: el módulo JSON: API presenta una estructura de carga útil predefinida que no se puede modificar. Una vez que el módulo está habilitado en Drupal, la estructura de carga útil consistente no se puede cambiar ni personalizar con cambios en los requisitos del proveedor.
Curva de aprendizaje: como JSON: el módulo API expone todos los atributos de una entidad, puede volverse de naturaleza compleja. Con una curva de aprendizaje bastante pronunciada, JSON: API puede no ser del agrado de todos.

¿Cómo descargar e instalar JSON: API Module?
ACTUALIZACIÓN: A partir de enero de 2020, JSON: el módulo API ahora es parte de Drupal Core (mucho después de que se publicó este blog). Por lo tanto, instalarlo no requiere el siguiente paso.
Al tener una dependencia del módulo de serialización, debe habilitarse primero antes de descargar e instalar JSON: API. Esto se puede hacer mediante cualquiera de los siguientes métodos:
Usando Drush
$ drush en serialization -y $ drush dl jsonapi && drush en jsonapi -yUsando la consola Drupal
$ drupal module:install serialization $ drupal module:download jsonapi && drupal module:install jsonapi 