---
title: Interfaz unificada de acceso
section: Concepts
weight: 5
description: La API REST universal y el lenguaje de consultas que ofrecen a las aplicaciones una forma única y estandarizada de acceder a los datos y las funciones del sistema.
related:
  - integration
  - architecture/abstract-data-layer
  - basic-modules/modules
  - data-representation/components
---

import Alert from '@/components/docs/Alert.astro';

## API REST universal

El sistema implementa una API REST universal que proporciona una interacción coherente entre distintos sistemas, aplicaciones y dispositivos. Abstrae los detalles de implementación y ofrece una forma estandarizada de acceder a los datos y las funciones del sistema.

El servicio de API REST presenta las siguientes características en el tratamiento de los datos:

- **Uniformidad**: todas las solicitudes y respuestas siguen el mismo formato.
- **Escalabilidad**: admite un gran número de dispositivos y usuarios.
- **Seguridad**: proporciona autenticación, autorización y cifrado de datos.
- **Documentación**: dispone de documentación clara para los desarrolladores.

El servicio simplifica de forma notable el trabajo posterior con los datos:

- **Integración simplificada**: distintos sistemas y dispositivos pueden interactuar a través de una única interfaz.
- **Abstracción del hardware**: las aplicaciones no dependen de dispositivos o protocolos concretos.
- **Gestión centralizada**: todas las solicitudes de datos pasan por un único punto de entrada.
- **Flexibilidad**: se pueden añadir funciones nuevas o modificar las existentes con facilidad.

<Alert type="note">
  El servicio de API REST se describe con mayor detalle en la sección [Referencia de la
  API](/es/api/v1).
</Alert>

#### Ejemplo de solicitud a la API REST universal

Solicitud de datos:

```bash title="Request example"
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3
```

Respuesta:

```json title="Response example"
[
  {
    "id": 123,
    "equipment_id": 1,
    "seance_id": 2,
    "channel_id": 3,
    "archive_type_id": 4,
    "value": 42.5,
    "event_time": 1739950861
  }
]
```

### Ventajas de la API REST universal

El servicio de API REST es una herramienta potente que crea una interfaz unificada de acceso a los datos.

Permite:

- Abstraerse de dispositivos y tecnologías concretos.
- Garantizar la coherencia y la facilidad de uso.
- Simplificar la integración de nuevos sistemas y dispositivos.

## Lenguaje de consultas

Sobre esta interfaz unificada de acceso a los datos, el sistema emplea un lenguaje de consultas para que los usuarios y las aplicaciones puedan interactuar con la base de datos a fin de recuperar, modificar o gestionar información. Un lenguaje de consultas universal aporta coherencia, facilidad de uso y potentes capacidades de manipulación de datos.

El lenguaje de consultas ofrece las siguientes capacidades:

- **Manipulación de datos simplificada**: los usuarios pueden recuperar datos sin escribir código complejo.
- **Estandarización**: un único lenguaje para todas las operaciones con datos.
- **Flexibilidad**: la posibilidad de ejecutar consultas tanto sencillas como complejas.
- **Integración**: se integra con facilidad en distintos sistemas y aplicaciones.

### Ejemplos de lenguajes de consulta utilizados en el sistema

#### SQL (Structured Query Language)

El _SGBD PostgreSQL_ utiliza el lenguaje de consultas _SQL_ para trabajar con los datos. Admite las operaciones básicas de manipulación de datos.

Ejemplo de una consulta SQL para la recuperación de datos:

```sql title="example.sql"
SELECT id, channel_id, value
FROM channel_data
WHERE equipment_id = 1 AND archive_type_id = 4;
```

#### Interfaz REST con parámetros

La _API REST_ universal implementa una interfaz _REST_ con parámetros como parte de su interacción con los datos. Esto permite que la _API_ utilice parámetros de consulta para filtrar los datos.

Por ejemplo:

```bash title="Request example"
GET /api/v1/channel_data?equipment_id=1&channel_id=101
```

#### Active Record Query Interface

El framework _Ruby on Rails_ implementa _Active Record (la Active Record Query Interface)_, que permite consultar bases de datos sin utilizar SQL.

A continuación se muestra un ejemplo de una consulta de _Active Record_ para recuperar datos:

```ruby title="Active record example"
ChannelDatum.where(equipment_id: 1, archive_type_id: 4)
```
