שילוב API של Contentful: הגדרת CDA, CMA, CPA

שילוב Contentful API גורם לא פעם לבלבול: טוקן שגוי מוביל לכך שטיוטות נראות בסביבת הייצור או ששינויים של עורכים לא נשמרים. אנחנו מגדירים CDA, CMA ו-CPA במפתח מלא, מפרידים בין רמות גישה ומבטלים שגיאות סביבה. הצוות שלנו מבטיח פעילות אינטגרציה יציבה עם תמיכה מתמשכת.

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

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
שילוב API של Contentful: הגדרת CDA, CMA, CPA
פשוט
מ- 1 יום עד 3 ימים

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

שאלות נפוצות

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

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

הבלבול בין שלושת ממשקי ה-API של Contentful הוא הסיבה הנפוצה ביותר לכך שטיוטות מופיעות בסביבת הייצור או ששינויים של עורכים לא נשמרים. במשך יותר מ-5 שנות עבודה, המהנדסים שלנו ראו עשרות פרויקטים שבהם טוקן שגוי אחד עלה בשעות של דיבוג. בואו נבהיר כיצד להבחין בין ממשקי ה-Delivery, Management ו-Preview, ונספק קונפיגורציות מוכנות עבור Next.js ו-Node.js.

כיצד להבחין בין שלושת ממשקי ה-API של Contentful?

Content Delivery API (CDA) — גישת קריאה בלבד לתוכן שפורסם. כתובת בסיס: https://cdn.contentful.com. טוקן: delivery access token (קריאה בלבד, ניתן להכניס אותו למשתני סביבה). התגובות נשמרות במטמון CDN — זה מספק TTFB מתחת ל-100 אלפיות השנייה כאשר הוא מוגדר כראוי, מהיר פי 5 מאשר ללא מטמון. Content Preview API (CPA) — קריאה בלבד, אך כולל טיוטות (ערכים שלא פורסמו). כתובת בסיס: https://preview.contentful.com. טוקן: preview access token. משמש במצב Draft Mode / מצב תצוגה מקדימה של Next.js. לעולם אל תשתמשו בטוקן זה בסביבת הייצור — אחרת הציבור יראה מאמרים לא גמורים. Content Management API (CMA) — CRUD מלא. כתובת בסיס: https://api.contentful.com. טוקן: personal access token או OAuth. לעולם לא בשימוש בצד הלקוח. רק בסקריפטים של צד השרת, פאנלים ניהוליים ו-CI/CD.

API כתובת URL טוקן מטרה מטמון
CDA cdn.contentful.com Delivery Token תוכן ציבורי CDN (מבוקר)
CPA preview.contentful.com Preview Token טיוטות לעורכים ללא
CMA api.contentful.com Management Token ניהול תוכן (CRUD) ללא

כיצד לבחור את הטוקן עבור כל סביבה?

ב-.env.local, שמרו תמיד שלושה מפתחות: CONTENTFUL_ACCESS_TOKEN_DELIVERY, CONTENTFUL_ACCESS_TOKEN_PREVIEW ו-CONTENTFUL_MANAGEMENT_TOKEN. עבור סביבת הייצור, השתמשו רק ב-Delivery. עבור staging — Preview. Management — רק בסקריפטים מקומיים וב-CI.

כדי למנוע בלבול, צרו קבצים נפרדים .env.production ו-.env.staging. ב-CI/CD, הגדירו החלפת טוקן אוטומטית בהתבסס על שם הענף. זה מפחית את הסיכון לטעויות אנוש. הניסיון מראה: 90% מהתקלות ב-Contentful קשורות לטוקנים שגויים.

הגדרת לקוח

import { createClient } from 'contentful';

// Для продакшена
const deliveryClient = createClient({
  space: process.env.CONTENTFUL_SPACE_ID!,
  accessToken: process.env.CONTENTFUL_DELIVERY_TOKEN!,
});

// Для превью (Next.js Draft Mode)
const previewClient = createClient({
  space: process.env.CONTENTFUL_SPACE_ID!,
  accessToken: process.env.CONTENTFUL_PREVIEW_TOKEN!,
  host: 'preview.contentful.com',
});

// Выбор клиента по флагу
export const getClient = (preview = false) => preview ? previewClient : deliveryClient;

Next.js Draft Mode + Preview API

// app/api/draft/route.ts
import { draftMode } from 'next/headers';
import { redirect } from 'next/navigation';

export async function GET(request: Request) {
  const { searchParams } = new URL(request.url);
  const secret = searchParams.get('secret');
  const slug = searchParams.get('slug');

  if (secret !== process.env.CONTENTFUL_PREVIEW_SECRET) {
    return new Response('Invalid token', { status: 401 });
  }

  draftMode().enable();
  redirect(`/blog/${slug}`);
}

// В компоненте страницы
import { draftMode } from 'next/headers';

export default async function BlogPost({ params }) {
  const { isEnabled } = draftMode();
  const client = getClient(isEnabled);
  const entry = await client.getEntries({
    content_type: 'blogPost',
    'fields.slug': params.slug,
  });
}

CMA: ניהול תוכן פרוגרמטי

import { createClient } from 'contentful-management';
const cmaClient = createClient({
  accessToken: process.env.CONTENTFUL_MANAGEMENT_TOKEN!,
});
const space = await cmaClient.getSpace(process.env.CONTENTFUL_SPACE_ID!);
const env = await space.getEnvironment('master');
// Создание записи
const entry = await env.createEntry('blogPost', {
  fields: {
    title: { 'en-US': 'New Post' },
    slug: { 'en-US': 'new-post' },
  },
});
// Публикация
await entry.publish();

מדוע Preview API קריטי עבור עורכים?

ללא Preview API, עורך לא יכול לראות כיצד מאמר ייראה לפני הפרסום. הוא נאלץ לפרסם "בעיוורון" ולבטל שגיאות. בפרויקט אחד, יישמנו CPA והפחתנו את זמן הגהת התוכן ב-40%: עורכים ראו טיוטות ישירות בדומיין ה-staging באמצעות Draft Mode. בהשוואה לייצוא ידני, Preview API מפחית שגיאות פרסום פי 3.

אופטימיזציה של בקשות ל-Contentful API

כדי להימנע משאילתות N+1 ולהפחית זמן השהיה, השתמשו בפרמטרים import { createClient } from 'contentful'; // Для продакшена const deliveryClient = createClient({ space: process.env.CONTENTFUL_SPACE_ID!, accessToken: process.env.CONTENTFUL_DELIVERY_TOKEN!, }); // Для превью (Next.js Draft Mode) const previewClient = createClient({ space: process.env.CONTENTFUL_SPACE_ID!, accessToken: process.env.CONTENTFUL_PREVIEW_TOKEN!, host: 'preview.contentful.com', }); // Выбор клиента по флагу export const getClient = (preview = false) => preview ? previewClient : deliveryClient; ו-// app/api/draft/route.ts import { draftMode } from 'next/headers'; import { redirect } from 'next/navigation'; export async function GET(request: Request) { const { searchParams } = new URL(request.url); const secret = searchParams.get('secret'); const slug = searchParams.get('slug'); if (secret !== process.env.CONTENTFUL_PREVIEW_SECRET) { return new Response('Invalid token', { status: 401 }); } draftMode().enable(); redirect(`/blog/${slug}`); } // В компоненте страницы import { draftMode } from 'next/headers'; export default async function BlogPost({ params }) { const { isEnabled } = draftMode(); const client = getClient(isEnabled); const entry = await client.getEntries({ content_type: 'blogPost', 'fields.slug': params.slug, }); } : import { createClient } from 'contentful-management'; const cmaClient = createClient({ accessToken: process.env.CONTENTFUL_MANAGEMENT_TOKEN!, }); const space = await cmaClient.getSpace(process.env.CONTENTFUL_SPACE_ID!); const env = await space.getEnvironment('master'); // Создание записи const entry = await env.createEntry('blogPost', { fields: { title: { 'en-US': 'New Post' }, slug: { 'en-US': 'new-post' }, }, }); // Публикация await entry.publish(); . עבור Delivery API, הפעילו מטמון CDN (לדוגמה, Cloudflare) עם TTL של עד שעה — זה ישפר את ה-LCP ב-20%. עבור שאילתות תכופות, השתמשו ב-ISR revalidation ב-Next.js. בעבודה עם טיוטות דרך Draft Mode, עלול להתרחש חוסר התאמה בהידרציה — פתרון: סנכרון הטוקן וה-space בין השרת ללקוח.

טבלת הגדרות סביבות

סביבה API טוקן מטמון
ייצור CDA Delivery CDN (TTL שעה)
staging CPA Preview ללא
מקומי CMA Management ללא

בשגיאת 401, בדקו שהטוקן תואם לסביבה ולא פג תוקפו. עבור CMA, ודאו של-Personal Access Token יש הרשאות ל-space הנדרש.

תהליך הגדרה מלא

  1. ניתוח: איסוף דרישות עבור שפות, סביבות וסוגי תוכן.
  2. עיצוב: הגדרת סכמת טוקנים, middleware לבחירת API.
  3. יישום: כתיבת לקוחות מבודדים עבור CDA, CPA, CMA.
  4. בדיקות: אימות שכל טוקן עובד בסביבתו, ללא דליפת טיוטות לייצור.
  5. פריסה: הגדרת CI/CD להחלפת טוקן אוטומטית במהלך קידום.

תיעוד רשמי של Contentful Delivery API.

ציר זמן: בין 3 ל-7 ימים בהתאם למורכבות הפרויקט. העלות מחושבת באופן אישי לאחר ביקורת על האינטגרציה הקיימת. חיסכון בזמן הגהת תוכן — עד 40%.

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

  • קוד מקור למודול הלקוח עבור CDA, CPA, CMA (TypeScript)
  • תיעוד על משתני סביבה וטוקנים
  • הגדרת Draft Mode לעורכים
  • המרת שאילתות קיימות ללקוח החדש
  • הדרכת צוות (שעה אונליין)
  • תמיכה לחודש לאחר האינטגרציה
טעויות נפוצות ורשימת בדיקה
  • שימוש ב-Preview Token בסביבת ייצור → הציבור לא יכול לראות תוכן חדש.
  • חוסר בטיפול בשגיאות (401/403) במהלך סיבוב טוקנים.
  • אחסון Management Token במאגר הקוד.
  • תמיד הפרידו סביבות: ייצור, staging, מקומי.
  • השתמשו ב-select עם הערות.

הזמינו ביקורת אינטגרציה מהמהנדסים שלנו. קבלו ייעוץ על הגדרת Contentful: נבדוק את הסכמה הנוכחית שלכם ונציע אופטימיזציה. למעלה מ-5 שנים בשוק, 50+ פרויקטים עם Contentful — אנו מבטיחים שהאינטגרציה תעבור חלק.