---
title: Einheitliche Zugriffsschnittstelle
section: Concepts
weight: 5
description: Die universelle REST-API und die Abfragesprache, die Anwendungen einen einzigen, standardisierten Weg zum Zugriff auf die Daten und Funktionen des Systems bieten.
related:
  - integration
  - architecture/abstract-data-layer
  - basic-modules/modules
  - data-representation/components
---

import Alert from '@/components/docs/Alert.astro';

## Universelle REST-API

Das System stellt eine universelle REST-API bereit, die eine konsistente Interaktion zwischen verschiedenen Systemen, Anwendungen und Geräten ermöglicht. Sie abstrahiert von den Implementierungsdetails und bietet einen standardisierten Weg zum Zugriff auf die Daten und Funktionen des Systems.

Der REST-API-Dienst weist bei der Datenverarbeitung die folgenden Eigenschaften auf:

- **Einheitlichkeit**: Alle Anfragen und Antworten folgen demselben Format.
- **Skalierbarkeit**: Unterstützt eine große Anzahl von Geräten und Benutzern.
- **Sicherheit**: Bietet Authentifizierung, Autorisierung und Datenverschlüsselung.
- **Dokumentation**: Verfügt über eine verständliche Dokumentation für Entwickler.

Der Dienst vereinfacht die weitere Arbeit mit Daten erheblich:

- **Vereinfachte Integration**: Verschiedene Systeme und Geräte können über eine einzige Schnittstelle zusammenwirken.
- **Hardwareabstraktion**: Anwendungen sind nicht von bestimmten Geräten oder Protokollen abhängig.
- **Zentrale Verwaltung**: Alle Datenanfragen laufen über einen einzigen Einstiegspunkt.
- **Flexibilität**: Neue Funktionen lassen sich problemlos hinzufügen und bestehende anpassen.

<Alert type="note">
  Der REST-API-Dienst wird im Abschnitt [API-Referenz](/de/api/v1) ausführlicher beschrieben.
</Alert>

#### Beispiel einer universellen REST-API-Anfrage

Datenanfrage:

```bash title="Request example"
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3
```

Antwort:

```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
  }
]
```

### Vorteile der universellen REST-API

Der REST-API-Dienst ist ein leistungsfähiges Werkzeug, das eine einheitliche Datenzugriffsschnittstelle schafft.

Er ermöglicht Ihnen:

- Von konkreten Geräten und Technologien zu abstrahieren.
- Konsistenz und einfache Bedienung sicherzustellen.
- Die Integration neuer Systeme und Geräte zu vereinfachen.

## Abfragesprache

Aufbauend auf dieser einheitlichen Datenzugriffsschnittstelle nutzt das System eine Abfragesprache, damit Benutzer und Anwendungen mit der Datenbank interagieren können, um Informationen abzurufen, zu ändern oder zu verwalten. Eine universelle Abfragesprache sorgt für Konsistenz, einfache Bedienung und leistungsstarke Möglichkeiten zur Datenmanipulation.

Die Abfragesprache bietet die folgenden Möglichkeiten:

- **Vereinfachte Datenmanipulation**: Benutzer können Daten abrufen, ohne komplexen Code schreiben zu müssen.
- **Standardisierung**: Eine einheitliche Sprache für alle Datenoperationen.
- **Flexibilität**: Die Möglichkeit, sowohl einfache als auch komplexe Abfragen auszuführen.
- **Integration**: Lässt sich problemlos in verschiedene Systeme und Anwendungen integrieren.

### Beispiele für im System verwendete Abfragesprachen

#### SQL (Structured Query Language)

Das _DBMS PostgreSQL_ verwendet zur Arbeit mit Daten die Abfragesprache _SQL_. Sie unterstützt die grundlegenden Operationen zur Datenmanipulation.

Beispiel einer SQL-Abfrage zum Abrufen von Daten:

```sql title="example.sql"
SELECT id, channel_id, value
FROM channel_data
WHERE equipment_id = 1 AND archive_type_id = 4;
```

#### REST-Schnittstelle mit Parametern

Die universelle _REST-API_ implementiert im Rahmen ihrer Dateninteraktion eine _REST_-Schnittstelle mit Parametern. Dadurch kann die _API_ Abfrageparameter zum Filtern von Daten verwenden.

Zum Beispiel:

```bash title="Request example"
GET /api/v1/channel_data?equipment_id=1&channel_id=101
```

#### Active Record Query Interface

Das Framework _Ruby on Rails_ implementiert _Active Record (das Active Record Query Interface)_, mit dem Sie Datenbanken abfragen können, ohne SQL zu verwenden.

Hier ist ein Beispiel für eine _Active Record_-Abfrage zum Abrufen von Daten:

```ruby title="Active record example"
ChannelDatum.where(equipment_id: 1, archive_type_id: 4)
```
