---
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](/fa/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 (زبان پرس‌وجوی ساخت‌یافته)

_سامانهٔ مدیریت پایگاه دادهٔ 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

چارچوب _Ruby on Rails_، _Active Record (واسط پرس‌وجوی Active Record)_ را پیاده‌سازی می‌کند که به شما امکان می‌دهد بدون استفاده از SQL از پایگاه‌های داده پرس‌وجو کنید.

در اینجا نمونه‌ای از یک پرس‌وجوی _Active Record_ برای بازیابی داده‌ها آمده است:

```ruby title="Active record example"
ChannelDatum.where(equipment_id: 1, archive_type_id: 4)
```
