Este es un artículo escrito por W. Jason Gilmore (https://www.wjgilmore.com) es el Director Técnico de DreamFactory, Inc, una plataforma de código abierto de automatización y gestión de API. Antes de unirse a DreamFactory, pasó gran parte de su carrera como consultor y desarrollador, ayudando a equipos de todo el mundo a crear soluciones de software increíbles. Jason es un prolífico escritor sobre tecnologías web, con casi una docena de libros y más de 300 artículos en su haber. Es asesor técnico especial de varias empresas emergentes con sede en Ohio y Nueva York.

Las organizaciones modernas están sometidas a una enorme presión para procesar e incorporar datos de forma eficaz a todas sus iniciativas. De hecho, el énfasis que se pone en extraer, recopilar, analizar y difundir información es tal que se ha creado un campo de estudio completamente nuevo conocido como ciencia de datos para dar sentido a todo esto (para los que piensen que esto suena sospechosamente académico, tomen nota de que Harvard Business Review llamó a la ciencia de datos El trabajo más sexy del siglo XXI.
La necesidad de API
Además de formalizar el proceso de gestión de datos, los equipos de TI han adoptado cada vez más los entornos de bases de datos heterogéneas y el desarrollo impulsado por API en un esfuerzo por garantizar que los datos se puedan ingerir, procesar y distribuir con la mínima fricción. Atrás han quedado los días en los que toda una organización se estandarizaba con un proveedor de bases de datos concreto; en su lugar, ahora es habitual que las empresas adopten una mezcla de soluciones SQL y NoSQL comerciales y de código abierto.
Por supuesto, debe haber alguna forma sensata de gestionar los datos a medida que fluyen a través de estas bases de datos, y ahí es donde entran en juego las API. Dado que las bases de datos suelen consultarse desde distintas aplicaciones (iOS, web, etc.), en los últimos años los desarrolladores han preferido las API a las bibliotecas específicas de las aplicaciones. Al crear una API uniforme y conectarse a ella, los desarrolladores pueden centrarse en la propia aplicación en lugar de en la fontanería relacionada con las bases de datos.
Entra en DreamFactory
O al menos esa es la idea. La realidad es que crear y mantener una API de base de datos es una tarea extraordinariamente larga y costosa. Aunque un equipo experimentado puede crear una interfaz CRUD API en unas pocas semanas, a menudo no tiene en cuenta las numerosas funciones adicionales necesarias para la gestión de la API. Capacidades como la autenticación y la autorización, la limitación del volumen de solicitudes, el almacenamiento en caché y el registro no suelen tenerse en cuenta a la hora de planificar una API, y averiguar cómo implementar estas capacidades de forma fragmentada puede resultar extraordinariamente difícil y costoso.
Muchas organizaciones evitan estos quebraderos de cabeza adoptando un Plataforma de gestión de API. Una solución especialmente popular es DreamFactory. No sólo es de código abierto (también hay disponibles versiones comerciales que ofrecen capacidades avanzadas), sino que también incluye soporte nativo para Couchbase. En este post aprenderás cómo generar una API REST de Couchbase utilizando DreamFactory en cuestión de minutos, y luego bloquear el acceso a la API utilizando la función de gestión de roles de DreamFactory.
Presentamos DreamFactory
DreamFactory es un marco de automatización y gestión de API utilizado por decenas de miles de organizaciones de todo el mundo. Aunque su popularidad se debe en gran medida a la capacidad de generar API completas, documentadas y seguras para una gran variedad de bases de datos SQL y NoSQL sin necesidad de codificación, DreamFactory admite en realidad miles de fuentes de datos y servicios de terceros, incluidos proveedores de entrega de correo electrónico, servicios de notificación móvil como AWS SNS, Apple y GCM Push, y para convertir servicios SOAP a REST.
DreamFactory soporta un total de 18 bases de datos, incluyendo MySQL, Oracle, Microsoft SQL Server, y... ¡Couchbase! Generar una API es muy sencillo, sólo requiere proporcionar el nombre de API deseado y las credenciales del servidor Couchbase. Para crear una API, usted comenzará ingresando a la interfaz de administración web de DreamFactory. Podrá acceder a las características clave de DreamFactory a través de la barra de navegación:

Cree el servicio haciendo clic en Servicios entonces Creeseleccione Couchbase del Base de datos categoría:

A continuación elegirás un nombre para la API y establecerás una etiqueta y una descripción. El nombre es especialmente importante porque, como verás, servirá como espacio de nombres para la API generada. La etiqueta y la descripción son sólo para fines de referencia dentro de la interfaz de administración:

Después de rellenar estos campos, haga clic en el botón Configurar e introduzca sus credenciales de Couchbase:

Además del Anfitrión, Puerto, Nombre de usuario y Contraseña puede limitar opcionalmente el número de registros devueltos por un campo GET y habilitar el almacenamiento de datos en caché durante un periodo de tiempo determinado. Para los propósitos de este tutorial voy a dejar esas opciones sin tocar y sólo generar la API pulsando el botón Guardar botón.
Interacción con la API
Una vez generada la API, puede navegar a la página Documentos API para experimentar con ella. DreamFactory genera documentación Swagger para cada API, y los administradores pueden proporcionar a los usuarios acceso restringido a esta documentación. Seleccione la nueva API, y se le presentará una lista de todos los puntos finales disponibles:

Elija el GET /_esquema y pulse la tecla Pruébalo botón. Dado que la documentación de Swagger es interactiva, puedes aprender cómo funciona la API sin tener que saltar directamente al código, lo que puede disminuir enormemente la frustración. Pulsando Pruébalo habilitará los distintos campos de parámetros asociados a este endpoint:

NOTA: Debido a la amplitud de bases de datos soportadas, y la importancia de proveer una interfaz API de base de datos uniforme sin importar el tipo de base de datos subyacente, DreamFactory utiliza términos genéricos para referirse a estructuras relacionadas con bases de datos. Lógicamente, estos términos no siempre se corresponden exactamente con la terminología específica de la base de datos. Por ejemplo, Couchbase utiliza el término cubo para representar una base de datos, mientras que DreamFactory utiliza el término genérico esquema para esta representación.
Pulse el botón Ejecute y se consultará el punto final de la API, devolviendo todos los buckets disponibles. Los usuarios de Couchbase estarán familiarizados con la función viaje-muestra devuelto en la siguiente respuesta:

Acceso a los datos de la API
A continuación, desplácese hasta GET /_tabla/{nombre_tabla} para recuperar registros (documentos) de la base de datos viaje-muestra cubo. El proceso para hacerlo es similar al utilizado para recuperar los buckets; seleccionarás el endpoint, pulsarás Pruébaloy, a continuación, introduzca los parámetros del punto final de la API que desee. Como puede ver en la siguiente captura de pantalla, este punto final admite bastantes parámetros:

Cuando se trata de seleccionar registros, DreamFactory soporta todo lo que usted haría típicamente al consultar una base de datos. Puede seleccionar campos específicos, unir tablas, filtrar registros, aplicar límites y desplazamientos, etc. Para este ejemplo, mantengámoslo simple y desplácese hasta la parte inferior de la lista de parámetros e ingrese viaje-muestra en el nombre_tabla parámetro. Pulse Ejecute y verás los siguientes resultados:

Generación de una clave de API restringida
La interfaz API Docs es estupenda para aprender más sobre el funcionamiento de una API, aunque inevitablemente querrá empezar a consultar la API desde una aplicación web o móvil. Para ello, primero tendrá que generar un archivo Clave API. Esto se debe a que DreamFactory no admite el concepto de API pública; todas las API están protegidas por una clave de API como mínimo. Además, cada clave de API se asigna a un papel. Los roles de DreamFactory determinan lo que un cliente en posesión de una clave API puede hacer en conjunción con la API. Por ejemplo, puede crear un rol que sea de sólo lectura, o que sólo permita el acceso a una tabla específica de la base de datos, o que sólo pueda insertar registros en una tabla pero leer registros de otra tabla.
Para crear una función, vaya a la sección Funciones y pulse Cree. Asignará un nombre y una descripción a la función y, a continuación, hará clic en el botón Acceda a pestaña. Es aquí donde ocurre la magia. En la siguiente captura de pantalla verás que he seleccionado la opción couchbase API (servicio), y establezca Componente a _table/travel-sample/*lo que significa que el rol sólo puede acceder a este conjunto de datos en particular. Además, he establecido Acceda a a GETlo que significa que será un rol de sólo lectura:

Hay algunas otras características interesantes aquí, sin embargo en aras de la brevedad le sugiero sólo pulsando Guardar para generar el rol.
A continuación, haga clic en el botón Aplicaciones para generar una clave API. Pulse el botón Cree y aparecerá la siguiente interfaz:

Aquí tendrás que introducir el nombre y la descripción de la aplicación. También elegirás una función para esta clave API, y en este ejemplo he seleccionado la recién generada couchbase papel. Por último, para el Ubicación de la aplicación He seleccionado No requiere almacenamiento porque me conectaré a la API desde una ubicación remota, como una aplicación web. Pulse Guardar y volverás al listado de claves de la aplicación:

Enhorabuena, acabas de crear una clave API restringida de sólo lectura. Ahora vamos a usar esa clave para hablar con el bucket de Couchbase.
Conexión a su API
Con su clave de API en la mano, es hora de interactuar con la API desde fuera de la interfaz de DreamFactory. Para los propósitos de este ejemplo voy a utilizar el comando Cliente REST de Insomnia no obstante, puede utilizar Carteroo con otro cliente API, o también puedes crear una sencilla interfaz web o para iPhone. En la siguiente captura de pantalla he consultado la /api/v2/couchbase/_table/viaje-muestra y en la parte derecha de la interfaz podrá ver los resultados:

De particular importancia es la X-DreamFactory-Api-Key ¡cabecera! Es aquí donde se proporciona la clave API. Si no se proporciona la clave, se producirá un error del tipo 400 con un mensaje de error relativo a una clave que falta. Además, si esta clave intenta acceder a una tabla restringida o realizar una acción (insertar, actualizar, etc.) que no se ha permitido expresamente en la definición de la función, aparecerá un mensaje de error del tipo 401 se devolverá un código de estado no autorizado.
Recursos
Esperemos que esta introducción a DreamFactory te haya hecho pensar en lo rápido que puedes empezar a crear aplicaciones basadas en Couchbase. Si estás interesado en aprender más, los siguientes recursos te serán de utilidad:
- Sitio web de DreamFactory: La web oficial de DreamFactory incluye todo tipo de información sobre la plataforma.
- Primeros pasos con DreamFactory: Esta guía recientemente publicada sobre los fundamentos de DreamFactory te guía a través de las capacidades clave de la plataforma. En particular, sugiero leer capítulo 3.
- Academia DreamFactory: DreamFactory Academy incluye varios vídeos introductorios. También puede consultar la página mucho más amplia Canal Youtube.
- Descargas de DreamFactory: DreamFactory está disponible en una amplia variedad de versiones y es compatible con las principales plataformas. Vaya a este enlace para elegir la versión que desee.
- Blog de DreamFactory: Aquí encontrará un flujo de publicaciones periódicas sobre las características de DreamFactory, incluida esta publicación reciente sobre creación de una API de geovalla utilizando la fórmula Haversine, PHP y los servicios de API con scripts de DreamFactory.