21 Junio 2017

Paragraphs y Rest, servicios al poder

En este artículo vamos a ver cómo configurar el módulo RESTful Web Services para que nos devuelva los campos paragraphs que hayamos creado, y así poder consumir esos datos desde alguna aplicación, ya sea una app movil, o un front hecho con algún framework javascript.

En primer lugar, vamos a preparar los ingredientes, así que abrir el armario y coger un Drupal 8.3, un Paragraphs 1.1 (Entity_reference_revisions como dependencia) y un Rest UI 1.15, que endulzará la forma de trabajar con Rest, que en esta versión viene incorporado en el core.

Procedemos a habilitar los módulos:

  • Paragraphs
  • Rest UI
  • RESTful Web Services

Al instalarlos, nos avisará de que también instalará las dependencias, en este caso Entity Reference Revisions y Serialization. Pulsamos sobre Continuar.

Una vez que tenemos el entorno listo, vamos a crear un par de tipos de Paragraphs, que más tarde añadiremos a uno de nuestros tipos de contenido.

Añadimos un paragraph de tipo texto, que usaremos como body.

Y añadimos un campo de tipo text, con una sóla repetición y obligatorio.

Ahora añadimos otro tipo de paragraph, pero esta vez añadiendo un campo de tipo imagen.

En el caso de que decidáis usar el módulo Paragraphs type Permissions, no olvidéis dar permisos a los usuarios anónimos para que puedan visualizar los tipos de paragraphs que acabamos de crear.

Cuando que tenemos los tipos de paragraphs que vamos a usar, añadiremos un campo al tipo de contenido Article y eliminaremos los campos Body y el campo Image, que vamos a sustituir por nuestro nuevo campo. El número de valores permitidos será ilimitado, para que el editor pueda crear la composición de texto e imágenes como quiera.

Lo más importante en la configuración del campo, es seleccionar los tipos de paragraphs que vamos a permitir usar para el campo que estamos creando.

Ahora toca activar los servicios web, y para eso usaremos el módulo rest.

Habilitamos el recurso Content:

y seleccionamos el método GET, formato json y autenticación mediante cookies.

Ahora, si hacemos una petición a la URL /node/1?_format=json, donde 1 es un identificador de un nodo de tipo Article que hayamos creado, tendremos el siguiente resultado:

Uno de los campos del JSON es el campo field_paragraph de nuestro tipo de contenido Article, pero no contiene el contenido de los paragraphs que hemos añadido, sino información de cómo identificarlos, y por lo tanto de cómo recuperarlos. Para poder recuperar los paragraphs, tendremos que habilitar el recurso Paragraph en admin/config/services/rest, de igual manera a como lo hicimos con Content.

Despues de habilitar el recurso, podremos recuperar elementos paragraph haciendo una petición GET  la url /entity/paragraph/target_id?_format=json.

En nuestro ejemplo tenemos 3 paragraphs, con ids 1, 2 y 3. Si pedimos el 1, tendremos el siguiente JSON.

Como podéis ver, es una forma muy sencilla de integrar este potente módulo en vuestros proyectos en los que Drupal 8 sea el backend.