---
title: Jednotné přístupové rozhraní
section: Concepts
weight: 5
description: Univerzální REST API a dotazovací jazyk, které aplikacím poskytují jediný standardizovaný způsob přístupu k datům a funkcím systému.
related:
  - integration
  - architecture/abstract-data-layer
  - basic-modules/modules
  - data-representation/components
---

import Alert from '@/components/docs/Alert.astro';

## Univerzální REST API

Systém implementuje univerzální REST API, které zajišťuje konzistentní interakci mezi různými systémy, aplikacemi a zařízeními. Abstrahuje implementační detaily a poskytuje standardizovaný způsob přístupu k datům a funkcím systému.

Služba REST API má následující vlastnosti v oblasti práce s daty:

- **Jednotnost**: Všechny požadavky a odpovědi dodržují stejný formát.
- **Škálovatelnost**: Podporuje velké množství zařízení a uživatelů.
- **Bezpečnost**: Zajišťuje autentizaci, autorizaci a šifrování dat.
- **Dokumentace**: Disponuje přehlednou dokumentací pro vývojáře.

Služba výrazně zjednodušuje další práci s daty:

- **Zjednodušená integrace**: Různé systémy a zařízení spolu mohou komunikovat prostřednictvím jednotného rozhraní.
- **Hardwarová abstrakce**: Aplikace nezávisí na konkrétních zařízeních ani protokolech.
- **Centralizovaná správa**: Všechny požadavky na data procházejí jediným vstupním bodem.
- **Flexibilita**: Nové funkce lze snadno přidávat a stávající upravovat.

<Alert type="note">
  Služba REST API je podrobněji popsána v sekci [Referenční příručka API](/cs/api/v1).
</Alert>

#### Příklad požadavku na univerzální REST API

Požadavek na data:

```bash title="Request example"
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3
```

Odpověď:

```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
  }
]
```

### Přínosy univerzálního REST API

Služba REST API je výkonný nástroj, který vytváří jednotné rozhraní pro přístup k datům.

Umožňuje vám:

- Abstrahovat od konkrétních zařízení a technologií.
- Zajistit konzistenci a snadné použití.
- Zjednodušit integraci nových systémů a zařízení.

## Dotazovací jazyk

Na tomto jednotném rozhraní pro přístup k datům systém staví dotazovací jazyk, díky kterému mohou uživatelé a aplikace komunikovat s databází za účelem získávání, úprav nebo správy informací. Univerzální dotazovací jazyk zajišťuje konzistenci, snadné použití a výkonné možnosti manipulace s daty.

Dotazovací jazyk poskytuje následující možnosti:

- **Zjednodušená manipulace s daty**: Uživatelé mohou získávat data bez psaní složitého kódu.
- **Standardizace**: Jednotný jazyk pro všechny operace s daty.
- **Flexibilita**: Možnost spouštět jednoduché i složité dotazy.
- **Integrace**: Snadno se integruje s různými systémy a aplikacemi.

### Příklady dotazovacích jazyků používaných v systému

#### SQL (Structured Query Language)

_DBMS PostgreSQL_ používá k práci s daty dotazovací jazyk _SQL_. Podporuje základní operace manipulace s daty.

Příklad SQL dotazu pro získání dat:

```sql title="example.sql"
SELECT id, channel_id, value
FROM channel_data
WHERE equipment_id = 1 AND archive_type_id = 4;
```

#### REST rozhraní s parametry

Univerzální _REST API_ implementuje v rámci interakce s daty _REST_ rozhraní s parametry. To umožňuje _API_ používat k filtrování dat parametry dotazu.

Například:

```bash title="Request example"
GET /api/v1/channel_data?equipment_id=1&channel_id=101
```

#### Dotazovací rozhraní Active Record

Framework _Ruby on Rails_ implementuje _Active Record (Active Record Query Interface)_, který umožňuje dotazovat se na databáze bez použití SQL.

Zde je příklad dotazu _Active Record_ pro získání dat:

```ruby title="Active record example"
ChannelDatum.where(equipment_id: 1, archive_type_id: 4)
```
