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.

Billboard image

Imagine monitoring that's actually built for developers

Join Vercel, CrowdStrike, and thousands of other teams that trust Checkly to streamline monitor creation and configuration with Monitoring as Code.

Start Monitoring

Top comments (0)

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay