DEV Community

Cover image for Primeros pasos con SAP CAP: Crea tu primera API y servicio OData en minutos 🚀

Primeros pasos con SAP CAP: Crea tu primera API y servicio OData en minutos 🚀

1. Una pequeña introducción

Si estás buscando una forma sencilla de desarrollar APIs empresariales escalables con integración nativa en el ecosistema SAP, SAP CAP es para ti. Este tutorial te guiará desde la configuración inicial hasta tener un servicio OData funcional que puedas consumir.
SAP CAP es una herramienta que empodera a los desarrolladores para crear aplicaciones empresariales más rápido, con menos esfuerzo y de manera alineada con los ecosistemas SAP.
SAP CAP se basa en principios de desarrollo centrados en servicios (service-centric) y promueve las mejores prácticas de diseño, como el uso de Core Data Services (CDS) para modelar datos y generar servicios de forma declarativa.

2. Configuración del entorno

Siendo breve y simplificando, lo que vamos a crear es una aplicación backend JS basada en NodeJs usando el framework de SAP CAP.

Requisitos:
Node.js: https://nodejs.org/es
Instalar el CAP CLI con:

npm install -g @sap/cds-dk

Crea un nuevo proyecto:
cds init mi-primer-proyecto
Resultado de CDS INIT
cd mi-primer-proyecto
npm install

3. Desarrollar la aplicación

Crea un archivo en db/schema.cds con el siguiente contenido:

entity Books {
    key ID : Integer;
    title : String;
    author : String;
    stock : Integer;
}
Enter fullscreen mode Exit fullscreen mode

En SAP CAP, una "entidad" es una representación de un conjunto de datos estructurados dentro del modelo de dominio. Es similar a una tabla en una base de datos relacional.
Muestra cómo probar la consistencia del modelo ejecutando:

cds watch

Esto levanta un servidor local de desarrollo, sin embargo no vas a poder exponer el modelo que creaste, necesitarás declarar un nuevo servicio.

CDS WATCH sin servicio declarado

Crea el archivo srv/cat-service.cds:

using { Books } from '../db/schema';

service CatalogService {
    entity BooksProjection as projection on Books;
}
Enter fullscreen mode Exit fullscreen mode

Este archivo es la declaracion de un servicio llamado CatalogService.
Se está creando sobre Books una proyección llamada BooksProjection.
Una proyección permite seleccionar, filtrar o transformar datos de una entidad base, creando una vista personalizada de los datos.

CDS WATCH con el servicio declarado

4. Consume el servicio

Navega al endpoint generado automáticamente:
http://localhost:4004/
o también
http://localhost:4004/odata/v4/catalog/BooksProjection

Puedes usar Postman para hacer consultas:
GET http://localhost:4004/odata/v4/catalog/BooksProjection

Consulta GET usando Postman

$metadata

El endpoint $metadata devuelve un archivo en formato XML que incluye:

  1. Entidades y sus propiedades
  2. Relaciones entre entidades: Expone cómo las entidades están vinculadas (por ejemplo, relaciones uno a muchos).
  3. Acciones y funciones: Si el servicio tiene lógica personalizada.
  4. Tipos de datos complejos: Detalla tipos personalizados que no son simples.

5. Agregar datos

Para agregar datos rápidamente puedes usar el siguiente comando:
cds add data
Este código va a agregar un csv por cada entidad con las cabeceras, puedes rellenar estos csv con datos de prueba.
Datos de prueba en CSV
Este sería el resultado final cuando se consume el servicio:
consumo de datos desde navegador

Usando postman:
Consumo de datos desde Postman

El servicio que se va a crear es OData, por lo tanto se puede filtrar usando los métodos de OData:

GET http://localhost:4004/odata/v4/catalog/BooksProjection?$filter=author eq 'J.D. Salinger'
cosumo de datos filtrados

Ahora que tienes un servicio básico funcionando, puedes extender tu aplicación conectándola a una base de datos como PostgreSQL, agregando lógica personalizada o incluso creando una interfaz Fiori Elements para visualizar los datos.

Retry later

Top comments (0)

The Most Contextual AI Development Assistant

Pieces.app image

Our centralized storage agent works on-device, unifying various developer tools to proactively capture and enrich useful materials, streamline collaboration, and solve complex problems through a contextual understanding of your unique workflow.

👥 Ideal for solo developers, teams, and cross-company projects

Learn more

Retry later