JSS Next.jsアプリをSitecoreエディターと統合するためのアーキテクチャとAPI
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Next.jsアプリケーションは、Sitecoreヘッドレス サービスHTTPレンダリング エンジン、Next.js APIルート、およびNext.jsプレビュー モード を使用して、エクスペリエンス エディターやHorizonなどの高度なSitecoreエディターと統合します。
次の図は、Next.js JSSアプリを高度なSitecoreエディターと統合するアーキテクチャを示しています。この図では、例としてSitecoreエクスペリエンス エディターを使用していますが、Horizon統合のアーキテクチャは似ています。
この図では、JSS for Next.jsに含まれるAPIが青緑色で強調表示されています。他の色の要素は、Next.js JSSサンプル・アプリケーションの一部です。
APIルート
Sitecoreエディターと統合するために、Next.js JSSサンプル アプリケーションには、次の3つのNext.js APIルートが含まれています。
-
ファイル <src>/pages/api/editing/render.tsで定義されているRender API Routeは、JSS for Next.jsが提供するミドルウェアEditingRenderMiddlewareにカプセル化されたロジックを使用して、SitecoreエディターからのPOST要求を処理します。このルートをJSSアプリケーション設定オプションserverSideRenderingEngineEndpointUrlの値として使用します。
-
<src>/pages/api/editing/data/key.tsで定義されているData APIルートは、JSS forのNext.jsが提供するミドルウェアEditingDataMiddlewareを使用してSitecoreエディターから送信されたデータの保存と取得を処理する動的なNext.js APIルートです。
-
ページ ルートは、メイン ルートNext.jsオプションのキャッチオール ルートで、<src>/pages/...path.tsxで定義されており、すべてのSitecoreページ ルートをレンダリングします。
JSS編集シークレット
JSS Editing Secretは、Render API RouteとData API Routeを介してJSS Next.jsアプリによって公開されるSitecoreエディター エンドポイントを保護するために使用されるトークンです。
JSS Editing Secretは、クライアント側とサーバー側で設定する必要があります。
ミドルウェアEditingRenderMiddlewareとEditingDataMiddlewareは、トークンを自動的に検証します。検証に失敗した場合は、HTTPステータスコード401のレスポンスを返します。
Next.jsプレビューモード
プレビュー モードはNext.jsの組み込み機能で、ドラフト コンテンツ (Sitecoreエクスペリエンス エディターなど) を作成し、静的生成をバイパスしてリクエスト時にこのコンテンツを含むページをレンダリングするCMSのユースケースを対象としています。
Next.js JSSアプリとSitecoreエディターの統合は、この機能に依存します。
EditingRenderMiddlewareミドルウェアは、Next.jsプレビュー モードを有効にします。プレビュー モードではNext.js Render API Routeレスポンスに特定のCookieが作成され、後続のPage Routeリクエストに渡されます。
Page Props Factoryは、ページのレンダリングに必要なすべてのデータを準備する役割を担い、現在のルートがプレビューモードになっているかどうかを確認します。ページがプレビューモードであると判断された場合、Page Routeリクエストは編集リクエストであり、プレビュー/編集データを使用できます。
JSS Next.jsでのデータ編集について
SitecoreエディターがRender API Routeに対して行うPOSTリクエストには、特定のページ ルートをレンダリングするために必要なすべてのものが含まれています。このリクエストには、レイアウト、辞書、言語のデータに加えて、エディターのレンダリングに必要な追加のメタデータと未保存のレイアウト情報が含まれます。このデータは、データの編集と呼ばれます。
Page Props Factoryは、編集データを使用してページpropsを取り込みます。編集モードではないときに個別に取得するのではなく、ページ に入力します。
要求間での編集データの保守
Vercelにデプロイすると、Render API Routeは自動的にPage Routeから完全に分離されたサーバーレス関数になり、サーバー上のNode.jsメモリキャッシュなど、編集データ用の単純なストレージソリューションの選択肢がなくなります。
Sitecore Next.js SDKには、Vercel Serverless Functionsとの互換性の問題を解決するキャッシュ実装が含まれています。
Next.jsはプレビュー データをCookieに保存します。Next.jsプレビュー モードには 、プレビュー データのサイズ制限が2 KBあり 、Sitecore編集データはこの制限を超えています。データを編集するためのカスタムストレージソリューションは、この問題も解決します。
APIの
Sitecoreエディター統合に関連するAPIは、EditingDataServiceを除き、middlewareサブモジュールの @sitecore-jss/sitecore-jss-nextjs NPMパッケージにあります。
これらを使用するには、コード ファイルにインポートします。例えば:
import { EditingRenderMiddleware } from '@sitecore-jss/sitecore-jss-nextjs/middleware';
import { editingDataService } from '@sitecore-jss/sitecore-jss-nextjs';
編集RenderMiddleware
EditingRenderMiddlewareは、Render API Routeを編集するためのミドルウェア/ハンドラです。ミドルウェア:
-
JSS編集シークレットを検証します。
-
POST要求ペイロードから編集データを抽出し、取得用のキーを返すEditingDataServiceを使用してデータを一時退避します。
-
Next.jsプレビューモードを有効にし、スタッシュされた編集データキーをプレビューデータとして渡します。
-
Page Routeリクエストを呼び出し、プレビュー モードのCookieを渡します。
-
レンダリングされたページのHTMLを、想定されるJSON形式でSitecoreエディターに返します。
-
VercelでJSS Next.jsアプリケーションをホストしていないときに、HTTPリクエストのプロトコルをオーバーライドできます。
EditingDataService (データサービスの編集)
EditingDataServiceは、リクエスト間でSitecoreエディター データの保守 (データの編集) を担当するサービスです。
通常は、デフォルト値を持つEditingDataServiceシングルトンであるeditingDataServiceサービスを使用します。
EditingDataMiddleware (英語)
EditingDataMiddlewareは、Data API Routeを編集するためのミドルウェア/ハンドラです。
EditingDataMiddleware:
-
JSS編集シークレットを検証します。
-
EditingDataCacheを介してデータの編集を設定 (HTTP PUT要求) または取得 (HTTP GET要求) します。
データキャッシュの編集
EditingDataCacheは、編集データ キャッシュの実装を定義するインターフェイスです。
編集DataDiskCache
EditingDataDiskCacheはディスクベースのEditingDataCache実装です (デフォルト)。Serverless Functionsを使用してVercelでホスティングするために必要です。