Este documento describe el desarrollo de un API REST para una base de datos DB2 dentro de un sistema IBM i utilizando el framework PHP CodeIgniter. Explica cómo integrar CodeIgniter con DB2, crear un API REST con una librería específica y consumir el API desde otra aplicación PHP usando cURL. El API REST proporciona ventajas como la separación de capas, mantenimiento y extensión de aplicaciones, e interacción con datos desde cualquier dispositivo.
1. Ing. Hector Curbelo Barrios
API REST FOR THE BD2 DATABASE WITHIN THE
IBM I SYSTEMS, USING THE PHP FRAMEWORK
CODEIGNITER
2. INTRODUCCIÓN
Con el desarrollo de las tecnologías y su arquitectura han surgido nuevas formas para las interacciones
de las aplicaciones. Con el decurso del tiempo la separación de las aplicaciones y la gestión de Base de
Datos se han ido separando en modelos y conceptos diferentes, hoy día podemos encontrar que la
mayoría de sistemas crean APIS para el consumo de sus servicios tanto de las aplicaciones propias del
sistema, tanto como para aplicaciones externas.
Esta arquitectura sobre la cual se desarrollan muchos sistemas permiten un alto grado de
mantenimiento, escalamiento en el tiempo, seguridad, versatilidad para la interacción con aplicaciones
de terceros entro otros aspectos importantes.
Para lograr esto se unen un conjunto de tecnologías ya conocidas desde hace algún tiempo como JSON
(acrónimo de JavaScript Object Notation, es un formato de texto ligero para el intercambio de datos),
REST (Representational State Transfer) es un estilo de arquitectura software para sistemas
hipermedia distribuidos, API Key (no es más que un identificador una clave y contraseña para
autenticarte cada vez que utilizas un Servicio Web), entre otros no menos fundamentales.
FIG: Ejemplo sencillo de cómo es el flujo de interacción entre aplicaciones, API y Almacenes de Datos
3. DESARROLLO
1. Framework Codeigniter.
Codeigniter es un framework escrito en PHP, sencillo, potente y muy fácil de adaptar a diferentes
escenarios por muy complejos que estos sean y los sistemas IBM i son uno de estos escenarios
complejos y diferentes donde se requiere adaptabilidad y fortaleza. Más información sobre este
framework: https://www.codeigniter.com .
En lo adelante en el artículos vincularemos todos los conceptos y funcionalidades con dicho
framework.
Desde aquí se pueden descargar la versión modificada:
https://github.com/ibmcodeigniter/iCodeigniter
2. Usando HMVC.
El Modelo Vista Controlador (MVC) viene a ser una forma de trabajar que separa los datos de una
aplicación, la interfaz de usuario, y la lógica de negocio en tres componentes distintos, el modelo,
la vista y el controlador. Uno de los motivos del MVC es la reutilización de código.
Bueno este patrón arquitectónico todos lo conocemos y la mayoría de framework por no ser
absoluto, la incorporan como parte de su arquitectura indiferentemente del lenguaje de
programación que este se base.
HMVC (Hierarchical model-view-controller) una variación del (MVC) modelo-vista-controlador,
es una forma de modular organizadamente nuestros desarrollo agrupándolo por conceptos que
nosotros mismo definidos y que tiene sentido lógico.
Aparte del MVC también tenemos el HMVC en codeigniter, en vez de tener un sistema MVC,
podemos tener muchos, o mejor dicho, tener muchos módulos. Cada módulo contiene o puede
contener lo siguiente:
Controllers
Models
Views
CLIENT
4. 3. Integración del driver de Base de datos DB2.
Driver de Base de Datos DB2 para Codeigniter usa todas las funcionalidades de manejo de datos
de este framework.
En el directorio application/config/database.php configurar los datos de configuración de base
de datos como, por ejemplo:
Esto permite un mejor manejo de base de datos, sobre todo más más fácil de entender y escribiendo
menos código haciendo que el proceso de desarrollo sea más ágil.
Hay que aclarar que no todas las funcionalidades del Active Record de Codeigniter están disponibles
para usarse en db2, pues la librería PHP desarrollada para este gestor de base de datos aun es un poco
pobre.
A continuación un ejemplo de lo que podemos hacer usando este driver de Base de Datos (db2):
5. Es importante apuntar que en cada ejecución de consulta es recomendable cerrar la conexión a la base
de Datos, puede generar problemas dejar mucho hilos de conexiones abiertos. El solo hecho de escribir
$this->db genera una nueva conexión a la base de Datos.
4. Librería API REST para Codeigniter.
Con esta librería puedes crear servicios REST usando Codeigniter con excelentes funcionalidades,
niveles de seguridad y fácil de implementar.
Formatos de Salida:
6. Verbo HTTP:
GET
Usado para recuperar información sobre un recurso existente. Esto es usado por navegadores cuando
ingresas una URL y presionas ir, o cuando haces clic en un enlace, así que es perfecto para recuperar
información en uno de tus recursos REST (como user).
POST
Usado para actualizar un recurso existente con información. Los navegadores usan esto para enviar la
mayoría de formularios en Internet, aunque algunos usan GET también enviando el formulario con una
query string que contenga los datos de los campos.
PUT
Menos comúnmente usado y no soportado por la mayoría de navegadores, PUT es usado para crear
un nuevo recurso.
DELETE
Tampoco es usado por muchos navegadores, este verbo HTTP es obviamente usado para borrar un
recurso.
Puedes descargar la librería desde este likn: https://github.com/chriskacerguis/codeigniter-
restserver
Además en este link puedes ver la forma de configurarlo dentro de Codeigniter y ejemplos tanto de
creación como de consumo.
5. Consumo del API REST.
Para el consumo puedes hacerlo desde otro proyecto hecho en Codeigniter usando la librería CURL,
incluso puedes hacerlo desde otras plataformas, dispositivos y sistemas.
Aquí te muestro como consumirlo usando Codeigniter:
1. Crear carpeta dentro del directorio application con el nombre api dentro de esta crear una
clase abstracta que permita devolver las claves de acceso al nuestros servidor API REST.
7. Luego al crear el modelo desde donde se va a consumir nuestro API REST y extendemos de esta
clase abstracta:
8. Como podemos ver usamos la librearía CURl para hacer el consumo de nuestro API, con el cual
podemos enviarle datos y recibir datos.
6. Ventajas del uso de API REST en Sistemas i Serie IBM.
Tener un API proporciona muchas ventajas, lo primero es que la separación en capas de tus
aplicaciones permitiendo que estas sean más cómodas de mantener y extender, lo que significa una
gran plataforma para el crecimiento de tus aplicaciones. En otro sentido la posibilidad de que puedas
interactuar con los datos desde cualquier dispositivo, además la interacción con diferentes aplicaciones
ya sean tuyas o de terceros.
Imagina poder ejecutar desde una aplicación móvil funciones RPG dentro de tus sistemas i Series,
mostrar datos estadísticas, interactuar con tus clientes de una manera más común y simple para ellos.
9. Si Alguien quiere probar el API REST con gusto le envío un ambiente completamente configurado, solo
escribirme a:
hcurbelo@gmail.com
Ing. Hector Curbelo Barrios