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:
- Ir a System Administration > Security > Applications > Web Applications
- 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
.png)
.png)
Agregar la Funciones de aplicacion Developer
.png)
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}'
git clone https://github.com/MarcoBahamondes/apirest-demo