אינטגרציות REST/JSON:API מוכנות לשימוש עבור Drupal

שילוב Drupal עם שירותים חיצוניים הופך לעיתים קרובות לכאוס בשל APIs לא סטנדרטיים ובעיות אימות. אנחנו בונים אינטגרציות REST ו-JSON:API במפתח מלא, מגדירים משאבים מותאמים אישית ואבטחה מבוססת OAuth 2.0. הצוות שלנו מטפל בכל המחזור—מביקורת ועד תמיכה—ומספק פתרון אמין וניתן להרחבה.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
אינטגרציות REST/JSON:API מוכנות לשימוש עבור Drupal
בינוני
~3-5 ימים

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

שאלות נפוצות

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

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1501
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1344
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1052
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1306
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1049
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1033

פיתוח אינטגרציות REST/JSON:API עבור Drupal

Drupal מגיע עם שתי מערכות API מובנות: REST (גמישה, דורשת הגדרה) ו-JSON:API (תקנית, עובדת מיד). JSON:API מועדפת עבור ארכיטקטורות headless ואפליקציות מובייל מכיוון שהיא מפחיתה את זמן פיתוח שכבת ה-API ב-50% ומספקת פורמט בקשה אחיד. עם זאת, מפתחים נתקלים לעיתים קרובות בבעיות: אימות שגוי, שאילתות N+1 בעת טעינת ישויות קשורות, מטמון וביצועים. בפרויקט אחד, שילבנו אתר Drupal עם אפליקציית מובייל. הדרישה הייתה טעינה מהירה של מאמרים עם תגיות ומחברים. שימוש נאיבי ב-JSON:API הביא לבקשות רבות—עבור כל מאמר, תגיות ומחבר נטענו בנפרד. הפתרון היה שימוש בפרמטר include והגדרת מטמון. לאחר האופטימיזציה, זמן הטעינה ירד מ-3 שניות ל-200 מילישניות. החיסכון עלה על 40% מזמן הפיתוח והפחית את עומס השרת.

למה JSON:API עדיפה על REST ב-Drupal

מאפיין REST JSON:API
תקינה לא, לכל משאב נקודות קצה משלו תקן JSON:API מחמיר
כלילת קשרים ידנית דרך ?include= אוטומטית דרך include
סינון פרמטרי שאילתה מותאמים אישית מסננים תקניים
עימוד לא תקני page[limit], page[offset] תקני
גרסאות לא קיים דרך Content-Type או כותרות
ביצועים דורש מטמון ידני מטמון אוטומטי עם תגיות מטמון

למידע נוסף על תקן JSON:API בויקיפדיה. JSON:API מנצחת בתרחישי ארכיטקטורת headless טיפוסיים. היא מפחיתה את זמן פיתוח שכבת ה-API ומספקת פורמט בקשה אחיד.

כיצד להגדיר JSON:API ואימות

הפעל JSON:API דרך Drush:

drush en jsonapi -y 

לאחר ההפעלה, כל סוגי התוכן זמינים אוטומטית. פורמט ה-URL: drush en jsonapi -y .

דוגמת בקשה עם סינון, כלילת קשרים ושדות מצומצמים:

curl https://site.com/jsonapi/node/article?filter[status]=1&include=field_tags,uid&sort=-created&page[limit]=10&page[offset]=20&fields[node--article]=title,body,created 

כתיבה דורשת אימות. אימות בסיסי מתאים לפיתוח; השתמש ב-OAuth 2.0 בסביבת ייצור.

# POST с базовой аутентификацией
curl -X POST https://site.com/jsonapi/node/article -u admin:password -H "Content-Type: application/vnd.api+json" -d '{"data":{"type":"node--article","attributes":{"title":"Новая статья","body":{"value":"<p>Текст</p>","format":"full_html"}}}}'

הגדר OAuth 2.0 עם המודול /jsonapi/{entity_type}/{bundle}:

composer require drupal/simple_oauth
drush en simple_oauth -y
# Сгенерируйте ключи и создайте клиент
# Получение токена
curl -X POST https://site.com/oauth/token -d "grant_type=client_credentials&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&scope=editor"
# Запрос с Bearer токеном
curl https://site.com/jsonapi/node/article -H "Authorization: Bearer ACCESS_TOKEN"

משאבי REST מותאמים אישית למשימות לא תקניות

אם JSON:API אינה מספיקה, צור משאב REST מותאם אישית. לדוגמה, נקודת קצה לבדיקת מלאי מוצר לפי SKU.

דוגמת יישום של ProductStockResource
<?php

namespace Drupal\mymodule\Plugin\rest\resource;

use Drupal\rest\Plugin\ResourceBase;
use Drupal\rest\ResourceResponse;
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;

/**
 * @RestResource(
 *   id = "product_stock",
 *   label = @Translation("Product Stock"),
 *   uri_paths = {
 *     "canonical" = "/api/products/{sku}/stock",
 *     "create" = "/api/products/stock/update"
 *   }
 * )
 */
class ProductStockResource extends ResourceBase {

  public function get(string $sku): ResourceResponse {
    $node = $this->getProductBySku($sku);
    if (!$node) {
      throw new NotFoundHttpException("Product $sku not found");
    }

    $response = new ResourceResponse([
      'sku' => $sku,
      'stock' => (int) $node->get('field_stock_quantity')->value,
      'available' => (bool) $node->get('field_in_stock')->value,
    ]);
    $response->addCacheableDependency($node);
    return $response;
  }

  public function patch(array $data): ResourceResponse {
    $sku = $data['sku'] ?? throw new BadRequestHttpException('SKU required');
    $node = $this->getProductBySku($sku);
    $node->set('field_stock_quantity', $data['quantity']);
    $node->save();
    return new ResourceResponse(['updated' => true], 200);
  }

}

הפעל את המשאב בניהול: Configuration → Web Services → REST.

כיצד לבצע אופטימיזציה לביצועי API

בעיות הביצועים העיקריות של Drupal API: שאילתות N+1, חוסר מטמון, בחירת שדות לא יעילה. השתמש בטכניקות הבאות:

  • כלילת קשרים (curl https://site.com/jsonapi/node/article?filter[status]=1&include=field_tags,uid&sort=-created&page[limit]=10&page[offset]=20&fields[node--article]=title,body,created ) להפחתת מספר השאילתות.
  • שדות מצומצמים—בחירת שדות נדרשים בלבד דרך הפרמטר # POST с базовой аутентификацией curl -X POST https://site.com/jsonapi/node/article -u admin:password -H "Content-Type: application/vnd.api+json" -d '{"data":{"type":"node--article","attributes":{"title":"Новая статья","body":{"value":"<p>Текст</p>","format":"full_html"}}}}' .
  • מטמון—הגדר תגיות מטמון והשתמש ב-Varnish או FastCGI Cache.
  • אינדקסים במסד נתונים—צור אינדקסים לשדות המסוננים לעיתים קרובות.
טכניקה השפעה
include מפחית שאילתות מ-1+N+M ל-1
שדות מצומצמים מפחית גודל תגובה עד פי 3
תגיות מטמון מבטל בקשות חוזרות לנתיבים
אינדקסים מאיץ סינון פי 10-100

דוגמת אופטימיזציה: בעת טעינת רשימת מאמרים עם מחברים ותגיות, ללא simple_oauth יש 1+N+M שאילתות (1 לרשימה, N למחברים, M לתגיות). עם composer require drupal/simple_oauth drush en simple_oauth -y # Сгенерируйте ключи и создайте клиент # Получение токена curl -X POST https://site.com/oauth/token -d "grant_type=client_credentials&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&scope=editor" # Запрос с Bearer токеном curl https://site.com/jsonapi/node/article -H "Authorization: Bearer ACCESS_TOKEN" —שאילתה אחת. בפרויקט אמיתי, זה הפחית את זמן התגובה מ-3 ל-0.2 שניות.

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

  • ביקורת ארכיטקטורה קיימת ובחירת גישת ה-API המתאימה (REST/JSON:API/GraphQL)
  • הגדרת JSON:API עם OAuth 2.0, סינון, כלילת קשרים, עימוד
  • פיתוח משאבי REST מותאמים אישית לתרחישים לא תקניים
  • אופטימיזציית ביצועים: מטמון, תגיות מטמון, Varnish/FastCGI
  • תיעוד API בפורמט OpenAPI
  • הכשרת צוות הלקוח לעבודה עם ה-API
  • תמיכה בהשקה (שבועיים של תמיכה חינמית לאחר ההשקה)

תהליך

  1. ניתוח—אנו לומדים את הארכיטקטורה, העומס והדרישות שלך.
  2. עיצוב—אנו בוחרים את המחסנית (JSON:API או REST), מתכננים נקודות קצה.
  3. יישום—קוד, הגדרת אימות, מטמון.
  4. בדיקות—בדיקות עומס, בדיקת N+1, מטמון.
  5. פריסה—מעבר לסביבת ייצור, ניטור.
  6. תמיכה—תיקוני באגים, ייעוץ.

לוח זמנים ועלות

הגדרת JSON:API בסיסית עם OAuth—מיומיים עד 4 ימים. משאבי REST מותאמים אישית—מיומיים עד 5 ימים. העלות מחושבת באופן אישי לאחר ביקורת. אנו מבטיחים פעילות API יציבה בעומסים של עד 1000 בקשות בשנייה.

התחייבויות

  • 5+ שנות ניסיון—ביצענו 20+ אינטגרציות Drupal
  • מומחים מוסמכים של Drupal ו-Symfony
  • אחריות קוד—6 חודשים של תיקונים חינמיים
  • מניעת שאילתות N+1—לא יותר מ-4 שאילתות SQL לעמוד בכל הבקשות

קבל הערכה לפרויקט שלך

צור קשר לייעוץ—ננתח את המשימה שלך ונציע פתרון אופטימלי. הזמן פיתוח אינטגרציה סוהר: קבל API מוכן עם תיעוד ותמיכה.