---
title: Yagona kirish interfeysi
section: Concepts
weight: 5
description: Ilovalarga tizim maʼlumotlari va funksiyalariga yagona, standartlashtirilgan usulda murojaat qilish imkonini beruvchi universal REST API va soʻrov tili.
related:
  - integration
  - architecture/abstract-data-layer
  - basic-modules/modules
  - data-representation/components
---

import Alert from '@/components/docs/Alert.astro';

## Universal REST API

Tizim turli tizimlar, ilovalar va qurilmalar oʻrtasida izchil oʻzaro taʼsirni taʼminlovchi universal REST API'ni amalga oshiradi. U amalga oshirish tafsilotlaridan mavhumlashtiradi va tizim maʼlumotlari hamda funksiyalariga murojaat qilishning standartlashtirilgan usulini taqdim etadi.

REST API xizmati maʼlumotlar bilan ishlashda quyidagi xususiyatlarga ega:

- **Bir xillik**: Barcha soʻrov va javoblar bir xil formatga amal qiladi.
- **Masshtablanuvchanlik**: Koʻp sonli qurilma va foydalanuvchilarni qoʻllab-quvvatlaydi.
- **Xavfsizlik**: Autentifikatsiya, avtorizatsiya va maʼlumotlarni shifrlashni taʼminlaydi.
- **Hujjatlashtirish**: Dasturchilar uchun aniq hujjatlarga ega.

Xizmat maʼlumotlar bilan keyingi ishni sezilarli darajada soddalashtiradi:

- **Soddalashtirilgan integratsiya**: Turli tizim va qurilmalar yagona interfeys orqali oʻzaro taʼsir qilishi mumkin.
- **Apparat mavhumligi**: Ilovalar muayyan qurilma yoki protokollarga bogʻliq emas.
- **Markazlashtirilgan boshqaruv**: Maʼlumotlarga barcha soʻrovlar yagona kirish nuqtasi orqali oʻtadi.
- **Moslashuvchanlik**: Yangi imkoniyatlarni qoʻshish yoki mavjudlarini oson oʻzgartirish mumkin.

<Alert type="note">
  REST API xizmati [API maʼlumotnomasi](/uz/api/v1) boʻlimida batafsilroq tavsiflangan.
</Alert>

#### Universal REST API soʻrovi misoli

Maʼlumot soʻrovi:

```bash title="Request example"
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3
```

Javob:

```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
  }
]
```

### Universal REST API'ning afzalliklari

REST API xizmati maʼlumotlarga yagona kirish interfeysini yaratuvchi kuchli vositadir.

U sizga quyidagi imkonlarni beradi:

- Muayyan qurilma va texnologiyalardan mavhumlashish.
- Izchillik va foydalanish qulayligini taʼminlash.
- Yangi tizim va qurilmalar integratsiyasini soddalashtirish.

## Soʻrov tili

Maʼlumotlarga yagona kirishning ushbu interfeysiga tayanib, tizim soʻrov tilidan foydalanadi — bu foydalanuvchilar va ilovalarga maʼlumotlarni olish, oʻzgartirish yoki boshqarish uchun maʼlumotlar bazasi bilan oʻzaro taʼsir qilish imkonini beradi. Universal soʻrov tili izchillik, foydalanish qulayligi va maʼlumotlarni qayta ishlashning kuchli imkoniyatlarini taʼminlaydi.

Soʻrov tili quyidagi imkoniyatlarni beradi:

- **Soddalashtirilgan maʼlumotlarni qayta ishlash**: Foydalanuvchilar murakkab kod yozmasdan maʼlumotlarni olishlari mumkin.
- **Standartlashtirish**: Barcha maʼlumot amallari uchun yagona til.
- **Moslashuvchanlik**: Ham oddiy, ham murakkab soʻrovlarni bajarish imkoniyati.
- **Integratsiya**: Turli tizim va ilovalar bilan oson birlashadi.

### Tizimda qoʻllaniladigan soʻrov tillariga misollar

#### SQL (Structured Query Language)

_PostgreSQL DBMS_ maʼlumotlar bilan ishlash uchun _SQL_ soʻrov tilidan foydalanadi. U maʼlumotlarni qayta ishlashning asosiy amallarini qoʻllab-quvvatlaydi.

Maʼlumotlarni olish uchun SQL soʻrovi misoli:

```sql title="example.sql"
SELECT id, channel_id, value
FROM channel_data
WHERE equipment_id = 1 AND archive_type_id = 4;
```

#### Parametrli REST interfeysi

Universal _REST API_ maʼlumotlar bilan oʻzaro taʼsirning bir qismi sifatida parametrli _REST_ interfeysini amalga oshiradi. Bu _API_'ga maʼlumotlarni filtrlash uchun soʻrov parametrlaridan foydalanish imkonini beradi.

Masalan:

```bash title="Request example"
GET /api/v1/channel_data?equipment_id=1&channel_id=101
```

#### Active Record Query Interface

_Ruby on Rails_ freymvorki _Active Record (the Active Record Query Interface)_'ni amalga oshiradi, bu sizga SQL'dan foydalanmasdan maʼlumotlar bazalariga soʻrov yuborish imkonini beradi.

Maʼlumotlarni olish uchun _Active Record_ soʻrovi misoli:

```ruby title="Active record example"
ChannelDatum.where(equipment_id: 1, archive_type_id: 4)
```
