---
title: Interfața unificată de acces
section: Concepts
weight: 5
description: Interfața REST API universală și limbajul de interogare, care oferă aplicațiilor o cale unică și standardizată de acces la datele și funcțiile sistemului.
related:
  - integration
  - architecture/abstract-data-layer
  - basic-modules/modules
  - data-representation/components
---

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

## Interfața REST API universală

Sistemul implementează o interfață REST API universală, care asigură o interacțiune coerentă între diferite sisteme, aplicații și dispozitive. Interfața face abstracție de detaliile de implementare și oferă o cale standardizată de acces la datele și funcțiile sistemului.

Serviciul REST API are următoarele caracteristici în lucrul cu datele:

- **Uniformitate**: toate cererile și răspunsurile respectă același format.
- **Scalabilitate**: acceptă un număr mare de dispozitive și de utilizatori.
- **Securitate**: asigură autentificarea, autorizarea și criptarea datelor.
- **Documentație**: dispune de o documentație clară pentru dezvoltatori.

Serviciul simplifică considerabil lucrul ulterior cu datele:

- **Integrare simplificată**: diferite sisteme și dispozitive pot interacționa printr-o singură interfață.
- **Abstractizare hardware**: aplicațiile nu depind de dispozitive sau protocoale concrete.
- **Gestionare centralizată**: toate cererile de date trec printr-un singur punct de intrare.
- **Flexibilitate**: funcțiile noi se adaugă, iar cele existente se modifică fără dificultate.

<Alert type="note">
  Serviciul REST API este descris mai detaliat în secțiunea [Documentația de referință API](/ro/api/v1).
</Alert>

#### Exemplu de cerere către interfața REST API universală

Cererea de date:

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

Răspunsul:

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

### Avantajele interfeței REST API universale

Serviciul REST API este un instrument puternic, care creează o interfață unificată de acces la date.

Acesta vă permite:

- să faceți abstracție de dispozitivele și tehnologiile concrete;
- să asigurați coerența și ușurința în utilizare;
- să simplificați integrarea noilor sisteme și dispozitive.

## Limbajul de interogare

Pornind de la această interfață unificată de acces la date, sistemul folosește un limbaj de interogare prin care utilizatorii și aplicațiile pot interacționa cu baza de date pentru a obține, a modifica sau a gestiona informații. Un limbaj de interogare universal asigură coerență, ușurință în utilizare și posibilități extinse de manipulare a datelor.

Limbajul de interogare oferă următoarele posibilități:

- **Manipulare simplificată a datelor**: utilizatorii pot obține date fără să scrie cod complex.
- **Standardizare**: un singur limbaj pentru toate operațiile cu date.
- **Flexibilitate**: se pot executa atât interogări simple, cât și interogări complexe.
- **Integrare**: se integrează ușor cu diverse sisteme și aplicații.

### Exemple de limbaje de interogare folosite în sistem

#### SQL (Structured Query Language)

Sistemul de gestiune a bazelor de date (DBMS) _PostgreSQL_ folosește limbajul de interogare _SQL_ pentru lucrul cu datele. Limbajul acceptă operațiile de bază de manipulare a datelor.

Exemplu de interogare SQL pentru obținerea datelor:

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

#### Interfața REST cu parametri

În lucrul cu datele, interfața _REST API_ universală implementează o interfață _REST_ cu parametri. Astfel, interfața _API_ poate folosi parametri de interogare pentru filtrarea datelor.

De exemplu:

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

#### Active Record Query Interface

Cadrul de dezvoltare _Ruby on Rails_ implementează _Active Record (Active Record Query Interface)_, care vă permite să interogați bazele de date fără SQL.

Iată un exemplu de interogare _Active Record_ pentru obținerea datelor:

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