---
title: Уніфікований інтерфейс доступу
section: Concepts
weight: 5
description: Універсальний REST API та мова запитів, що дають застосункам єдиний стандартизований спосіб доступу до даних і функцій системи.
related:
  - integration
  - architecture/abstract-data-layer
  - basic-modules/modules
  - data-representation/components
---

import Alert from '@/components/docs/Alert.astro';

## Універсальний REST API

Система реалізує універсальний REST API, що забезпечує узгоджену взаємодію між різними системами, застосунками та пристроями. Він приховує деталі реалізації та надає стандартизований спосіб доступу до даних і функцій системи.

Сервіс REST API має такі характеристики обробки даних:

- **Однорідність**: усі запити та відповіді мають однаковий формат.
- **Масштабованість**: підтримує велику кількість пристроїв і користувачів.
- **Безпека**: забезпечує автентифікацію, авторизацію та шифрування даних.
- **Документація**: має зрозумілу документацію для розробників.

Сервіс суттєво спрощує подальшу роботу з даними:

- **Спрощена інтеграція**: різні системи та пристрої можуть взаємодіяти через єдиний інтерфейс.
- **Апаратна абстракція**: застосунки не залежать від конкретних пристроїв чи протоколів.
- **Централізоване керування**: усі запити даних проходять через єдину точку входу.
- **Гнучкість**: нові функції можна додавати, а наявні — змінювати без зайвих зусиль.

<Alert type="note">Сервіс REST API докладніше описано в розділі [Довідник API](/ua/api/v1).</Alert>

#### Приклад запиту до універсального REST API

Запит даних:

```bash title="Request example"
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3
```

Відповідь:

```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
  }
]
```

### Переваги універсального REST API

Сервіс REST API — це потужний інструмент, що створює єдиний інтерфейс доступу до даних.

Він дає змогу:

- Абстрагуватися від конкретних пристроїв і технологій.
- Забезпечити узгодженість і зручність використання.
- Спростити інтеграцію нових систем і пристроїв.

## Мова запитів

Спираючись на цей єдиний інтерфейс доступу до даних, система використовує мову запитів, щоб користувачі та застосунки могли взаємодіяти з базою даних для отримання, зміни чи керування інформацією. Універсальна мова запитів забезпечує узгодженість, зручність використання та потужні можливості маніпулювання даними.

Мова запитів надає такі можливості:

- **Спрощене маніпулювання даними**: користувачі можуть отримувати дані, не пишучи складного коду.
- **Стандартизація**: єдина мова для всіх операцій із даними.
- **Гнучкість**: можливість виконувати як прості, так і складні запити.
- **Інтеграція**: легко інтегрується з різними системами та застосунками.

### Приклади мов запитів, що використовуються в системі

#### SQL (Structured Query Language)

_СКБД PostgreSQL_ використовує мову запитів _SQL_ для роботи з даними. Вона підтримує основні операції маніпулювання даними.

Приклад SQL-запиту для отримання даних:

```sql title="example.sql"
SELECT id, channel_id, value
FROM channel_data
WHERE equipment_id = 1 AND archive_type_id = 4;
```

#### REST-інтерфейс із параметрами

Універсальний _REST API_ реалізує _REST_-інтерфейс із параметрами як частину своєї взаємодії з даними. Це дає змогу _API_ використовувати параметри запиту для фільтрації даних.

Наприклад:

```bash title="Request example"
GET /api/v1/channel_data?equipment_id=1&channel_id=101
```

#### Active Record Query Interface

Фреймворк _Ruby on Rails_ реалізує _Active Record (the Active Record Query Interface)_, що дає змогу запитувати бази даних без використання SQL.

Ось приклад запиту _Active Record_ для отримання даних:

```ruby title="Active record example"
ChannelDatum.where(equipment_id: 1, archive_type_id: 4)
```
