profound-logoProfound CMS
⌘K
Admin
Theme
DocsTutorialBlogPhilosophy
DocsTutorialBlogPhilosophy

Hybrid

Collection of Pages with ComponentsTypes of ComponentsSetup server sent events (SSE) content refetchInstall Profound CMS as a proxyCEL Scripting in Template BuilderProject ScaffoldingMedia Library

Headless

Quick startSplit Screen JSON Component Builder with LLMComponent Zod Pull

REST API

REST API 概要getウェブサイトを CMS API に接続するgetGET /routesgetGET /routegetGET /blocksgetGET /blocks/with-cel-cachegetGET /blocks/generatedgetGET /componentsgetGET /components/{name}getGET /dataset/{schema_name}getGET /content-changes (SSE)patchPATCH /dataset/{schema_name}postPOST /translationpatchPATCH /translationsgetGET /usagepostCSV 投稿patchPATCH /csv
All Systems Operational
Powered Byprofound-logo
Theme

ウェブサイトを CMS API に接続する

CMS API にウェブサイトを接続する

CMS API を使用すると、ウェブサイトは Profound CMS から公開されたコンテンツを取得してレンダリングできます。ドキュメントページ、マーケティングページ、ブログ、ヘルプセンター、その他のコンテンツ重視のエクスペリエンスを構築するのに利用できます。

一般的な統合は次の3つの要素で構成されます:

  1. CMS 接続を設定する
  2. 公開済みコンテンツを取得する
  3. アプリケーションでコンテンツをレンダーする

設定

アプリケーションを CMS に接続するには、CMS API URL、ウェブサイト ID、API キーを指定します。

const cmsConfig = {
  cmsUrl: 'https://cms.dev.tryprofoun.com',
  websiteId: 'your-website-id',
  apiKey: process.env.PROFOUND_API_KEY,
};

環境によって変わる値には環境変数を使用します:

NEXT_PUBLIC_CMS_API_URL=https://cms.dev.tryprofound.com
NEXT_PUBLIC_WEBSITE_ID=your-website-id
PROFOUND_API_KEY=your-api-key

クライアントサイドのコードでプライベートな API キーを公開しないでください。API キーはサーバー、ビルドプロセス、またはバックエンドのルートで使用する必要があります。

コンテンツを取得する

CMS 内のコンテンツはスキーマごとに整理されています。たとえば、プロジェクトには post、category、page、section といったスキーマが存在するかもしれません。

スキーマ名を指定してコンテンツを取得します:

const posts = await cms.schema('post').fetchAll();

ID で単一のドキュメントを取得するには:

const post = await cms.schema('post').fetchSingleById('document-id');

ローカライズされたコンテンツを取得するには、スキーマの翻訳版をリクエストします:

const frenchPost = await cms
  .schema('post')
  .translation('fr')
  .fetchSingleById('document-id');

ルートをレンダーする

CMS が管理するページを使用しているウェブサイトでは、現在の URL パスに基づいてコンテンツを取得できます。

const route = await cms.route.getByPath({
  websiteId: 'your-website-id',
  path: '/docs/getting-started',
});

ルートのレスポンスは、レンダーするページとブロックを特定します。アプリケーションはブロックを取得し、自分たちのコンポーネントでレンダーできます。

const blocks = await cms.block.getByIds({
  websiteId: 'your-website-id',
  ids: route.blockIds,
});

例: ドキュメントページをレンダーする

async function getDocsPage(path: string) {
  const route = await cms.route.getByPath({
    websiteId: process.env.WEBSITE_ID,
    path,
  });

  const blocks = await cms.block.getByIds({
    websiteId: process.env.WEBSITE_ID,
    ids: route.blockIds,
  });

  return {
    title: route.label,
    path: route.path,
    blocks,
  };
}

戻り値のブロックを使用して、アプリケーションのコンポーネントシステムでページをレンダーできます。

キャッシュ

公開済みの CMS コンテンツはキャッシュしても安全です。ほとんどのウェブサイトでは、API レスポンスを短時間キャッシュし、コンテンツが変更されたときに再検証します。

一般的な設定は次のとおりです:

const content = await cache(
  () => cms.schema('post').fetchAll(),
  {
    revalidate: 60,
    tags: ['cms-posts'],
  }
);

推奨されるキャッシュ動作:

  • 公開済みの読み取りをキャッシュする。
  • 更新頻度の高いコンテンツには短いキャッシュ期間を使用する。
  • フレームワークがオンデマンドな無効化をサポートしている場合はキャッシュタグを利用する。
  • プレビューや下書きのコンテンツはキャッシュしない。

プレビューモード

プレビューモードを使うと、編集者は公開前の変更を確認できます。

よくあるパターンは、別のプレビュールートを用意することです。例:

/docs/getting-started
/cms-preview/docs/getting-started

本番ページでは公開済みコンテンツのみを取得するべきです。プレビューページでは次のようなプレビューパラメータを受け付けられます:

?edit_mode=true

プレビュールートは通常動的にし、静的にキャッシュしないでください。

エラーハンドリング

ビルド時やリクエスト時に CMS のコンテンツが利用できない場合があります。アプリケーションはこれを適切に処理する必要があります。

推奨される動作:

  • ルートが存在しない場合は 404 を返す。
  • 任意のナビゲーションコンテンツを読み込めない場合は空のリストを返す。
  • サーバー側の取得エラーをログに記録する。
  • 内部 API エラーを訪問者に露出させない。

例:

async function getPost(id: string) {
  try {
    return await cms.schema('post').fetchSingleById(id);
  } catch (error) {
    console.error('Failed to fetch CMS post', error);
    return null;
  }
}

セキュリティ

API キーは秘密に保ち、サーバーでのみ使用してください。プライベートな認証情報をブラウザのバンドルや公開された JavaScript に含めないでください。

公開環境変数は次のような機微でない値にのみ使用します:

  • CMS の公開 URL
  • ウェブサイト ID
  • ロケール設定

次の用途にはプライベートな環境変数を使用します:

  • API キー
  • プレビュートークン
  • 管理者認証情報
  • デプロイシークレット

まとめ

ウェブサイトで構造化されたコンテンツの取得、CMS 管理ルートのレンダー、編集者向けプレビューワークフローをサポートする必要がある場合は CMS API を利用してください。

標準的な統合では次のことを行います:

  • CMS URL、ウェブサイト ID、API キーを設定する。
  • スキーマごとにドキュメントを取得する。
  • ルートパスでページを取得する。
  • CMS ブロックを独自のコンポーネントでレンダーする。
  • 公開済みコンテンツをキャッシュする。
  • プレビューコンテンツは動的に保つ。
  • プライベートな認証情報はサーバーに保持する。
Continue Reading
Previous‹REST API 概要NextGET /routes›