Artículo
· 24 jun, 2025 Lectura de 3 min

Exponer una API REST básica con InterSystems IRIS: Ejemplo paso a paso en Docker

Introducción

InterSystems IRIS permite crear APIs REST utilizando clases ObjectScript y el framework %CSP.REST. Esta funcionalidad permite desarrollar servicios modernos para exponer datos a aplicaciones web, móviles o integraciones externas.

En este artículo aprenderás cómo crear una API REST básica en InterSystems IRIS, incluyendo:

  • Clase de datos persistente
  • Clase REST con métodos GET y POST
  • Web application para exponer la API
  • Demostración completa con Docker

Paso 1: Crear la clase de datos Demo.Producto

Class Demo.Producto Extends (%Persistent, %JSON.Adaptor) {
  Property Nombre As %String;
  Property Precio As %Numeric(10,2);
}
  • %Persistent permite almacenar en la base de datos.
  • %JSON.Adaptor facilita convertir objetos a JSON.

Paso 2: Crear la clase REST Demo.ProductoAPI

Class Demo.ProductoAPI Extends %CSP.REST {

XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ] {
  <Routes>
    <Route Url="/producto" Method="GET" Call="Listar"/>
    <Route Url="/producto" Method="POST" Call="Crear"/>
  </Routes>
}
ClassMethod Listar() As %Status
{
   Try {
    Set productos = []
    &sql(DECLARE C1 CURSOR FOR SELECT ID, Nombre, Precio FROM Demo.Producto)
    &sql(OPEN C1)
    While (SQLCODE=0) {
      &sql(FETCH C1 INTO :id, :nombre, :precio)
      Quit:SQLCODE'=0
      Do productos.%Push({"ID": (id), "Nombre": (nombre), "Precio": (precio)})
    }

    Do ##class(%REST.Impl).%SetContentType("application/json")
    Do ##class(%REST.Impl).%SetStatusCode("200")
    Write productos.%ToJSON()
    } Catch (ex) {
        Do ##class(%REST.Impl).%SetStatusCode("400")
       Write ex.DisplayString()
    }
  Quit $$$OK
}

ClassMethod Crear() As %Status
{
  Try {
    set dynamicBody = {}.%FromJSON(%request.Content)
    Set prod = ##class(Demo.Producto).%New()
    Set prod.Nombre = dynamicBody.%Get("Nombre")
    Set prod.Precio = dynamicBody.%Get("Precio")
    Do prod.%Save()

    Do ##class(%REST.Impl).%SetContentType("application/json")
    Do ##class(%REST.Impl).%SetStatusCode("200")
    Write prod.%JSONExport()
    } Catch (ex) {
        Do ##class(%REST.Impl).%SetStatusCode("400")
       Write ex.DisplayString()
    }
    Quit $$$OK
}

}

Paso 3: Crear una Web Application

Desde el Portal de Administración:

  1. Ir a System Administration > Security > Applications > Web Applications
  2. Crear una nueva aplicación:
    • URL: /api/productos
    • Namespace: USER
    • Clase: Demo.ProductoAPI
    • Activar REST y acceso anónimo para pruebas

para entrar al portal http://localhost:52773/csp/sys/%25CSP.Portal.Home.zen  Usuario=SuperUser Clave=SYS

Agregar la Funciones de aplicacion Developer

 


Paso 4: Docker de demostración

Estructura del proyecto

apirest-demo/
├── Dockerfile
├── iris.script
└── cls/
    ├── Demo.Producto.cls
    └── Demo.ProductoAPI.cls

Dockerfile

FROM intersystemsdc/iris-community:latest

COPY cls /irisdev/app/cls
COPY iris.script /irisdev/app/iris.script

RUN iris start IRIS \
 && iris session IRIS < /irisdev/app/iris.script \
 && iris stop IRIS quietly

Comandos para construir y correr el contenedor

cd apirest-demo
docker build -t iris-apirest-demo .
docker run -d --name iris-api -p 52773:52773 -p 1972:1972 iris-apirest-demo

Pruebas con Postman o curl

GET productos

curl http://localhost:52773/api/productos/producto

 

POST producto

curl -X POST http://localhost:52773/api/productos/producto \
  -H "Content-Type: application/json" \
  -d '{"Nombre":"Cafe","Precio":2500}'

para descarcar el codigo de ejemplo https://github.com/MarcoBahamondes/apirest-demo

git clone https://github.com/MarcoBahamondes/apirest-demo
Comentarios (1)1
Inicie sesión o regístrese para continuar