Montar una API con Services y Views en Drupal 7

Drupal Services Views

El módulo Services de Drupal en su versión 3 tiene una integración con Views más que interesante. Más allá de que le quedan por pulir cosas, como por ejemplo la previsualizacion de la View al crearla, se pueden obtener resultados interesantes si se configura adecuadamente.
La siguiente guía explica como crear una nueva View y como mapear resultados desde una URL.

Requisitos

Creando nuestro Endpoint
Lo primero que debemos hacer es crear nuestra Api, la cual la haremos desde Admin / Structure / Services / Add . Veremos una pantalla como la siguiente:

Services

Completamos los campos de la siguiente manera, a modo de ejemplo:

  • Machine-readable name of the endpoint: Nombre del API, no debe contener ni símbolos ni números ni letras en mayúsculas.
  • Path to endpoint: Url de la API, para entenderlo pondremos un ejemplo: Si completamos este campo con el texto "prueba", entonces a nuestra API la llamaremos desde http://www.midominio.com/prueba
  • Server: Elegiremos REST.
  • Authentication: Este campo permite poner restricciones de autenticación para nuestra API, tenemos la autenticación por sesión, aparte de otras que vienen en módulos distintos (por ejemplo Oauth). En nuestro caso no marcaremos ningún campo, lo que significará que tenemos una API con acceso no restringido para anónimos.

Creando una View
A la hora de crear la View, veremos un nuevo display llamado Services, en la foto se puede observar mejor:

Services

A la hora de agregar campos a la View es muy importante no quitar los contenedores HTML, ni los Labels. Aparte debemos asignar un custom value key para que guardemos el resultado de la consulta en él.
Otra cosa a tener en cuenta es que no debemos asignar una ruta a nuestra API, hay que dejar ese valor en "/" ya que haremos referencia a ella mediante su Machine name, al cual si podemos editar su nombre a nuestro gusto.
El punto flojo de Services Views es que la preview no funciona muy bien, espero que en futuras actualizaciones solucionen este problema. No debemos alarmarnos si la preview no muestra resultados correctos, simplemente es un error del módulo, repito.

Asignando la View al Endpoint
Volviendo a nuestra API creada previamente, debemos entrar a Edit Resources, y veremos una pantalla como la siguiente:

Services

Simplemente debemos activar la casilla Views, para poder usar la que creamos en nuestro Endpoint

¿Cómo hacemos llamadas a nuestra API?
Supongamos estos valores:

  • Nombre de dominio: http://www.marioaraque.com
  • Url de nuestro Endpoint: api
  • Machine name de nuestra View: art_culos
  • Display id de nuestro Display de la View: articles

Si escribimos la url: http://www.marioaraque.com/api/views/art_culos?display_id=articles podremos ver un ejemplo de la llamada.
Es importante tener en cuenta los valores anteriores, son pasos cortos pero indispensables para poder tener una API en condiciones. La URL anterior sirve como ejemplo para extraer los últimos artículos de esta Web.

Conclusiones
Como verán, crear una API ahora mismo es muy fácil si usamos los módulos adecuados. Drupal ha evolucionado mucho hasta permitirnos crear este tipo de recursos muy útiles para la evolución de nuestro proyecto Web. Tener una API nos puede permitir hacer aplicaciones con Phonegap y Backbonejs con colecciones dinámicas, nos permite salir de Drupal y poder usarlo en cualquier otro proyecto que requiera nuestra tecnología.

Cualquier consulta que tengan al respecto no duden en dejar un comentario, con gusto les responderé.