שילוב REST API חזק של Bitrix עם OAuth וקישוריות

שילוב 1C-Bitrix עם מערכות חיצוניות באמצעות REST API הוא אתגר שכל מפתח מתמודד איתו בעת אוטומציה של החלפת נתונים: מוצרים, הזמנות, צדדים עסקיים. אנו רואים לעתים קרובות את אותן טעויות: חוסר בפאג'ינציה, אימות חלש, התעלמות מקישוריות. לדוגמה, חברה אחת חוותה ירידה משמעותית ב...
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
שילוב REST API חזק של Bitrix עם OAuth וקישוריות
בינוני
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1466
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1019
  • פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    764
  • פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    882
  • פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    811
  • פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1167

שילוב 1C-Bitrix עם מערכות חיצוניות באמצעות REST API הוא אתגר שכל מפתח נתקל בו בעת אוטומציה של החלפת נתונים: מוצרים, הזמנות, גורמים עסקיים. אנו רואים לעתים קרובות את אותן טעויות: חוסר בפאג'ינציה, אימות חלש, התעלמות מקאשינג. לדוגמה, חברה אחת ספגה הפסדים משמעותיים עקב קריסות שרת במהלך ייבוא המוני — ללא פאג'ינציה, והשרת הגיע למגבלת זיכרון. עיצוב API נכון חוסך עד 40% מזמן התמיכה ומאפשר קנה מידה ללא כאבים. במאמר זה נסקור טכניקות מפתח: כיצד לבחור את סוג האפליקציה, מדוע OAuth מאובטח פי 5 מ-webhook, מדוע פאג'ינציה וקאש הם חיוניים, וכיצד אנו בונים REST API מלא.

סוגי אפליקציות REST ב-Bitrix

נסקור את שלוש האפשרויות כדי לבחור את המתאימה לתרחיש שלך.

  • אפליקציה מקומית — מותקנת על פורטל Bitrix24 ספציפי, לא מפורסמת במרקטפלייס. נוצרת ב"יישומים → למפתחים → אחר → אפליקציה מקומית". הגדרה קלה יותר, ללא תהליך בדיקה.
  • Webhook נכנס — אפשרות פשוטה: טוקן קבוע המקושר למשתמש ספציפי. מתאים לאינטגרציות server-to-server שבהן אין צורך ב-OAuth למשתמש.
  • אפליקציית OAuth — אפליקציה מלאה עם הרשאת משתמש באמצעות OAuth 2.0. נדרשת אם האפליקציה משרתת מספר פורטלים.
פרמטר מקומית Webhook OAuth
אימות OAuth מובנה טוקן קבוע OAuth 2.0 (Authorization Code)
תמיכה בריבוי פורטלים לא לא כן
מורכבות הגדרה נמוכה מינימלית בינונית
אבטחה בינונית נמוכה גבוהה

מתי להשתמש ב-OAuth 2.0 במקום ב-Webhook?

אם האינטגרציה חייבת לשרת מספר פורטלים או לטפל בנתונים חסויים — בחר ב-OAuth 2.0. הוא מאובטח פי 5 מ-webhook קבוע בשל טוקנים קצרי מועד ויכולת רוטציה. סיבוב מפתחות API כל 90 יום מפחית את סיכון הדליפה פי 3 בהשוואה למפתח סטטי. לתרחישי server-to-server פנימיים שבהם האבטחה אינה קריטית, webhook מספיק.

יצירת REST API עבור 1C-Bitrix כמקור נתונים

המודול הסטנדרטי bitrix.rest חושף נתוני Bitrix למערכות חיצוניות. אבל לפעמים צריך את ההפך: ליצור REST API עבור נתוני 1C-Bitrix שמערכת חיצונית יכולה לקרוא. השתמש במודול main ובמסלולי Bitrix D7:

// В модуле или init.php — регистрируем обработчик use Bitrix\Main\Routing\Controllers\PublicPageController; $app = \Bitrix\Main\Application::getInstance(); $app->getRouter()->add( 'GET', '/api/v1/products/{id}', function(\Bitrix\Main\HttpRequest $request, int $id) { // Проверяем API-ключ $apiKey = $request->getHeader('X-API-Key'); if (!validateApiKey($apiKey)) { http_response_code(401); echo json_encode(['error' => 'Unauthorized']); die(); } $element = \CIBlockElement::GetByID($id)->GetNext(); header('Content-Type: application/json'); echo json_encode(['product' => $element]); die(); } ); 

חשיבות גרסור ה-API

לאינטגרציה ארוכת טווח, גרס את ה-API בכתובת ה-URL (// В модуле или init.php — регистрируем обработчик use Bitrix\Main\Routing\Controllers\PublicPageController; $app = \Bitrix\Main\Application::getInstance(); $app->getRouter()->add( 'GET', '/api/v1/products/{id}', function(\Bitrix\Main\HttpRequest $request, int $id) { // Проверяем API-ключ $apiKey = $request->getHeader('X-API-Key'); if (!validateApiKey($apiKey)) { http_response_code(401); echo json_encode(['error' => 'Unauthorized']); die(); } $element = \CIBlockElement::GetByID($id)->GetNext(); header('Content-Type: application/json'); echo json_encode(['product' => $element]); die(); } ); , /api/v1/). שינויים ב-v2 לא שוברים לקוחות על v1. צור תיעוד באמצעות OpenAPI/Swagger: קובץ YAML עם הסכימה שפורסם ב-/api/v2/. מומחים מוסמכים מבטיחים שהתיעוד תמיד מעודכן.

פאג'ינציה חובה ב-REST API

פאג'ינציה היא חובה עבור מתודות שמחזירות רשימות. בלעדיה, אתה מסתכן בחריגה ממגבלות זיכרון וזמן ביצוע. פאג'ינציה מפחיתה את עומס השרת פי 3 בהשוואה לשליפת כל הנתונים. אנו מיישמים פאג'ינציה מבוססת עמודים:

// Стандартная пагинация для REST-метода каталога function getProductsList(int $page = 1, int $limit = 50): array { $offset = ($page - 1) * $limit; $result = \CIBlockElement::GetList( ['ID' => 'ASC'], ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'], false, ['nTopCount' => $limit, 'iNumPage' => $page], ['ID', 'NAME', 'DETAIL_TEXT', 'PREVIEW_PICTURE', 'PROPERTY_*'] ); $items = []; while ($item = $result->GetNext()) { $items[] = $item; } $total = \CIBlockElement::GetList( [], ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'], [] ); return [ 'items' => $items, 'pagination' => [ 'page' => $page, 'limit' => $limit, 'total' => $total, 'pages' => ceil($total / $limit), ], ]; } 

אימות ואבטחה

לאינטגרציות machine-to-machine (מערכת חיצונית → Bitrix), השתמש במפתחות API המאוחסנים ב-/api/docs. סובב מפתחות כל 90 יום. אפליקציית OAuth עם טוקנים קצרי מועד מאובטחת פי 5 מ-webhook עם טוקן קבוע כשמדובר בנתונים חסויים. בקשות חייבות לכלול:

  • HTTPS — כל האינטגרציות על TLS 1.2+.
  • הגבלת IP ברמת nginx: // Стандартная пагинация для REST-метода каталога function getProductsList(int $page = 1, int $limit = 50): array { $offset = ($page - 1) * $limit; $result = \CIBlockElement::GetList( ['ID' => 'ASC'], ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'], false, ['nTopCount' => $limit, 'iNumPage' => $page], ['ID', 'NAME', 'DETAIL_TEXT', 'PREVIEW_PICTURE', 'PROPERTY_*'] ); $items = []; while ($item = $result->GetNext()) { $items[] = $item; } $total = \CIBlockElement::GetList( [], ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'], [] ); return [ 'items' => $items, 'pagination' => [ 'page' => $page, 'limit' => $limit, 'total' => $total, 'pages' => ceil($total / $limit), ], ]; } עבור נקודות קצה שנקראות רק מהרשת הארגונית.
  • הגבלת קצב: b_option ב-nginx, 100 בקשות לדקה לכל IP.

תיעוד רשמי של REST API

מה זה Tagged Caching ולמה הוא נחוץ?

REST API ללא קאשינג פירושו עומס ישיר על מסד הנתונים בכל בקשה. Tagged caching מאפשר פסילת קאש לפי תגים כאשר נתונים משתנים. השתמש ב-allow 192.168.1.0/24; deny all;:

$cache = \Bitrix\Main\Data\Cache::createInstance(); $cacheKey = 'product_' . $productId . '_' . LANGUAGE_ID; if ($cache->initCache(1800, $cacheKey, '/api/products/')) { return $cache->getVars(); } $cache->startDataCache(); $data = fetchProductData($productId); $cache->endDataCache($data); return $data; 

TTL של 30 דקות לקטלוג מספק איזון סביר בין רעננות לעומס.

מה כוללת העבודה שלנו

אנו מציעים פיתוח אינטגרציה מלא ומקיף:

  • עיצוב סכימת API ותיעוד (OpenAPI/Swagger).
  • יישום מתודות CRUD לכל הישויות הנדרשות.
  • הגדרת אימות (OAuth 2.0, מפתחות API, webhooks).
  • שילוב פאג'ינציה, סינון וקאשינג.
  • כתיבת בדיקות אוטומטיות ותיעוד אינטגרציה.
  • הכשרת המפתחים שלך לשימוש ב-API.
משימה מאמץ
עיצוב סכימה ותיעוד 4–8 שעות
יישום CRUD (לכל ישות) 4–6 שעות
אימות ואבטחה 4–6 שעות
פאג'ינציה, סינון, קאשינג 4–6 שעות
בדיקות ותיעוד אינטגרציה 6–8 שעות

לוחות זמנים ועלות מחושבים באופן אישי. אם אתה צריך אינטגרציית 1C-Bitrix אמינה עם ה-CRM, ה-ERP או החנות המקוונת שלך, צור קשר. קבל ייעוץ — המהנדסים שלנו יציעו את הפתרון האופטימלי. הזמן פיתוח אינטגרציה עכשיו — זה יחסוך לך משאבים.