---
title: Jedinstveni interfejs za pristup
section: Concepts
weight: 5
description: Univerzalni REST API i jezik upita koji aplikacijama omogućavaju da na jedinstven, standardizovan način pristupaju podacima i funkcijama sistema.
related:
  - integration
  - architecture/abstract-data-layer
  - basic-modules/modules
  - data-representation/components
---

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

## Univerzalni REST API

Sistem implementira univerzalni REST API koji obezbeđuje doslednu interakciju između različitih sistema, aplikacija i uređaja. Ovaj interfejs skriva detalje implementacije i omogućava standardizovan pristup podacima i funkcijama sistema.

Kada je reč o radu sa podacima, servis REST API ima sledeće karakteristike:

- **Ujednačenost**: Svi zahtevi i odgovori imaju isti format.
- **Skalabilnost**: Podržava veliki broj uređaja i korisnika.
- **Bezbednost**: Obezbeđuje autentifikaciju, autorizaciju i šifrovanje podataka.
- **Dokumentacija**: Ima jasnu dokumentaciju za programere.

Servis znatno pojednostavljuje dalji rad sa podacima:

- **Pojednostavljena integracija**: Različiti sistemi i uređaji mogu da komuniciraju preko jedinstvenog interfejsa.
- **Apstrakcija hardvera**: Aplikacije ne zavise od konkretnih uređaja ni protokola.
- **Centralizovano upravljanje**: Svi zahtevi za podacima prolaze kroz jedinstvenu ulaznu tačku.
- **Fleksibilnost**: Lako je dodati nove funkcije ili izmeniti postojeće.

<Alert type="note">
  Servis REST API detaljnije je opisan u odeljku [Referentna dokumentacija za API](/sr/api/v1).
</Alert>

#### Primer zahteva ka univerzalnom interfejsu REST API

Zahtev 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 interfejsa REST API

Servis REST API moćan je alat koji stvara jedinstven interfejs za pristup podacima.

Omogućava vam da:

- radite nezavisno od konkretnih uređaja i tehnologija;
- obezbedite doslednost i jednostavnost korišćenja;
- pojednostavite integraciju novih sistema i uređaja.

## Jezik upita

Oslanjajući se na ovaj jedinstveni interfejs za pristup podacima, sistem koristi jezik upita kako bi korisnici i aplikacije mogli da rade sa bazom podataka – da preuzimaju i menjaju informacije ili da upravljaju njima. Univerzalni jezik upita obezbeđuje doslednost, jednostavnost korišćenja i velike mogućnosti za manipulaciju podacima.

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

- **Pojednostavljena manipulacija podacima**: Korisnici mogu da preuzimaju podatke bez pisanja složenog koda.
- **Standardizacija**: Jedan jezik za sve operacije sa podacima.
- **Fleksibilnost**: Mogućnost izvršavanja i jednostavnih i složenih upita.
- **Integracija**: Lako se integriše sa različitim sistemima i aplikacijama.

### Primeri jezika upita koji se koriste u sistemu

#### SQL (Structured Query Language)

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

Primer SQL upita za preuzimanje podataka:

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

#### Interfejs REST sa parametrima

Univerzalni _REST API_ u okviru rada sa podacima implementira interfejs _REST_ sa parametrima. Zahvaljujući tome _API_ može da koristi parametre upita za filtriranje podataka.

Na primer:

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

#### Interfejs za upite Active Record

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

U nastavku je primer upita _Active Record_ za preuzimanje podataka:

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