---
title: Jedinstveno sučelje za pristup
section: Concepts
weight: 5
description: Univerzalni REST API i jezik upita koji aplikacijama omogućuju pristup podacima i funkcijama sustava na jedinstven, standardiziran način.
related:
  - integration
  - architecture/abstract-data-layer
  - basic-modules/modules
  - data-representation/components
---

import Alert from '@/components/docs/Alert.astro';

## Univerzalni REST API

Sustav implementira univerzalni REST API koji osigurava dosljednu interakciju između različitih sustava, aplikacija i uređaja. Ovo sučelje skriva pojedinosti implementacije i omogućuje standardiziran pristup podacima i funkcijama sustava.

Kad je riječ o radu s podacima, usluga REST API ima sljedeće karakteristike:

- **Ujednačenost**: svi zahtjevi i odgovori imaju isti format.
- **Skalabilnost**: podržava velik broj uređaja i korisnika.
- **Sigurnost**: osigurava autentifikaciju, autorizaciju i šifriranje podataka.
- **Dokumentacija**: ima jasnu dokumentaciju za programere.

Usluga znatno pojednostavnjuje daljnji rad s podacima:

- **Pojednostavnjena integracija**: različiti sustavi i uređaji mogu komunicirati putem jedinstvenog sučelja.
- **Apstrakcija hardvera**: aplikacije ne ovise o konkretnim uređajima ni protokolima.
- **Centralizirano upravljanje**: svi zahtjevi za podacima prolaze kroz jedinstvenu ulaznu točku.
- **Fleksibilnost**: lako je dodati nove funkcije ili izmijeniti postojeće.

<Alert type="note">
  Usluga REST API detaljnije je opisana u odjeljku [Referentna dokumentacija API-ja](/hr/api/v1).
</Alert>

#### Primjer zahtjeva prema univerzalnom sučelju REST API

Zahtjev za podacima:

```bash title="Request example"
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3
```

Odgovor:

```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
  }
]
```

### Prednosti univerzalnog sučelja REST API

Usluga REST API moćan je alat koji stvara jedinstveno sučelje za pristup podacima.

Omogućuje vam da:

- radite neovisno o konkretnim uređajima i tehnologijama;
- osigurate dosljednost i jednostavnost korištenja;
- pojednostavnite integraciju novih sustava i uređaja.

## Jezik upita

Oslanjajući se na ovo jedinstveno sučelje za pristup podacima, sustav koristi jezik upita kako bi korisnici i aplikacije mogli raditi s bazom podataka – dohvaćati i mijenjati informacije ili upravljati njima. Univerzalni jezik upita osigurava dosljednost, jednostavnost korištenja i velike mogućnosti za manipulaciju podacima.

Jezik upita pruža sljedeće mogućnosti:

- **Pojednostavnjena manipulacija podacima**: korisnici mogu dohvaćati podatke bez pisanja složenog koda.
- **Standardizacija**: jedan jezik za sve operacije nad podacima.
- **Fleksibilnost**: mogućnost izvršavanja i jednostavnih i složenih upita.
- **Integracija**: lako se integrira s različitim sustavima i aplikacijama.

### Primjeri jezika upita koji se koriste u sustavu

#### SQL (Structured Query Language)

_Sustav za upravljanje bazama podataka (DBMS) PostgreSQL_ za rad s podacima koristi jezik upita _SQL_. Podržava osnovne operacije za manipulaciju podacima.

Primjer SQL upita za dohvaćanje podataka:

```sql title="example.sql"
SELECT id, channel_id, value
FROM channel_data
WHERE equipment_id = 1 AND archive_type_id = 4;
```

#### Sučelje REST s parametrima

Univerzalni _REST API_ u okviru rada s podacima implementira sučelje _REST_ s parametrima. Zahvaljujući tome _API_ može koristiti parametre upita za filtriranje podataka.

Na primjer:

```bash title="Request example"
GET /api/v1/channel_data?equipment_id=1&channel_id=101
```

#### Sučelje za upite Active Record

Programski okvir _Ruby on Rails_ implementira _Active Record (Active Record Query Interface)_, koji vam omogućuje da izvršavate upite nad bazama podataka bez korištenja jezika SQL.

U nastavku je primjer upita _Active Record_ za dohvaćanje podataka:

```ruby title="Active record example"
ChannelDatum.where(equipment_id: 1, archive_type_id: 4)
```
