---
title: Jednotné prístupové rozhranie
section: Concepts
weight: 5
description: Univerzálne REST API a dopytovací jazyk, ktoré aplikáciám poskytujú jediný štandardizovaný spôsob prístupu k údajom a funkciám systému.
related:
  - integration
  - architecture/abstract-data-layer
  - basic-modules/modules
  - data-representation/components
---

import Alert from '@/components/docs/Alert.astro';

## Univerzálne REST API

Systém implementuje univerzálne REST API, ktoré zabezpečuje konzistentnú interakciu medzi rôznymi systémami, aplikáciami a zariadeniami. Abstrahuje implementačné detaily a poskytuje štandardizovaný spôsob prístupu k údajom a funkciám systému.

Služba REST API má pri práci s údajmi tieto vlastnosti:

- **Jednotnosť**: Všetky požiadavky a odpovede majú rovnaký formát.
- **Škálovateľnosť**: Podporuje veľký počet zariadení a používateľov.
- **Bezpečnosť**: Zabezpečuje autentifikáciu, autorizáciu a šifrovanie údajov.
- **Dokumentácia**: Disponuje prehľadnou dokumentáciou pre vývojárov.

Služba výrazne zjednodušuje ďalšiu prácu s údajmi:

- **Zjednodušená integrácia**: Rôzne systémy a zariadenia môžu navzájom komunikovať cez jediné rozhranie.
- **Abstrakcia hardvéru**: Aplikácie nie sú závislé od konkrétnych zariadení ani protokolov.
- **Centralizovaná správa**: Všetky požiadavky na údaje prechádzajú jediným vstupným bodom.
- **Flexibilita**: Nové funkcie možno jednoducho pridávať a existujúce upravovať.

<Alert type="note">
  Služba REST API je podrobnejšie popísaná v sekcii [Referenčná príručka API](/sk/api/v1).
</Alert>

#### Príklad požiadavky univerzálneho REST API

Požiadavka na údaje:

```bash title="Request example"
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3
```

Odpoveď:

```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
  }
]
```

### Výhody univerzálneho REST API

Služba REST API je výkonný nástroj, ktorý vytvára jednotné rozhranie pre prístup k údajom.

Umožňuje vám:

- Abstrahovať od konkrétnych zariadení a technológií.
- Zaistiť konzistentnosť a jednoduché používanie.
- Zjednodušiť integráciu nových systémov a zariadení.

## Dopytovací jazyk

Na základe tohto jednotného rozhrania pre prístup k údajom systém využíva dopytovací jazyk, vďaka ktorému môžu používatelia a aplikácie komunikovať s databázou pri získavaní, úprave či správe informácií. Univerzálny dopytovací jazyk zabezpečuje konzistentnosť, jednoduché používanie a výkonné možnosti manipulácie s údajmi.

Dopytovací jazyk poskytuje tieto možnosti:

- **Zjednodušená manipulácia s údajmi**: Používatelia môžu získavať údaje bez písania zložitého kódu.
- **Štandardizácia**: Jediný jazyk pre všetky operácie s údajmi.
- **Flexibilita**: Možnosť spúšťať jednoduché aj zložité dopyty.
- **Integrácia**: Jednoduchá integrácia s rôznymi systémami a aplikáciami.

### Príklady dopytovacích jazykov používaných v systéme

#### SQL (Structured Query Language)

_Systém na správu databáz PostgreSQL_ používa na prácu s údajmi dopytovací jazyk _SQL_. Podporuje základné operácie manipulácie s údajmi.

Príklad SQL dopytu na získanie údajov:

```sql title="example.sql"
SELECT id, channel_id, value
FROM channel_data
WHERE equipment_id = 1 AND archive_type_id = 4;
```

#### REST rozhranie s parametrami

Univerzálne _REST API_ v rámci práce s údajmi implementuje _REST_ rozhranie s parametrami. To umožňuje _API_ filtrovať údaje pomocou parametrov dopytu.

Napríklad:

```bash title="Request example"
GET /api/v1/channel_data?equipment_id=1&channel_id=101
```

#### Dopytovacie rozhranie Active Record

Framework _Ruby on Rails_ implementuje _Active Record (dopytovacie rozhranie Active Record)_, ktoré umožňuje dopytovať databázy bez použitia SQL.

Tu je príklad dopytu _Active Record_ na získanie údajov:

```ruby title="Active record example"
ChannelDatum.where(equipment_id: 1, archive_type_id: 4)
```
