Sitecore レイアウト サービス

Current version: 10.1

Sitecore レイアウト サービス は、JSON でフォーマットされた Sitecore コンテンツを提供する Sitecore ヘッドレス サービスのエンドポイントです。Sitecore レイアウト サービス クライアントを使用して、レイアウト サービスと通信し、Sitecore レンダリング エンジンを使用してコンテンツをレンダリングします。

レイアウト サービス クライアント ライブラリは NuGet パッケージとして利用でき、Sitecore.LayoutService.Client の接頭辞を持ちます。

SitecoreLayoutRequest モデル

SitecoreLayoutRequest モデルは、任意のプロパティの読み書きをサポートする中間データ転送オブジェクトにインスタンス化します。レイアウト サービス クライアントは、クエリ文字列キーを使用してこれらのプロパティをレイアウト サービスに送信します。

SitecoreLayoutRequest モデルには、関連する get/set メソッドを組み合わせた一連のデフォルト プロパティが含まれています。たとえば、request.ApiKey() は API キー値を取得し、request.ApiKey("value") は API キー値を設定します。

デフォルトのプロパティは次のとおりです。

プロパティ

メソッド

内容

サンプル

クエリ文字列キー

API キー (必須)

ApiKey() 

GUID

123e4567-e89b-12d3-a456-426614174000

sc_apikey

アイテム (必須)

Path()

コンテンツ ツリー パス

/articles

item

サイト名

SiteName()

人が読める名前

MySite

sc_site

言語

Language() 

ISO 言語コード

enen-GB

sc_lang

SitecoreLayoutResponse モデル

レイアウト サービスは、フィールド レベルまでナビゲーション可能な、厳密に型指定された SitecoreLayoutResponse モデルからインスタンス化されたオブジェクトを返します。SitecoreLayoutResponse オブジェクトは、次のようないくつかのパーツで構成されます。

  • Request - レイアウト サービスに送信される SitecoreLayoutRequest

  • Metadata - HTTP 応答ヘッダーなどの応答メタデータ。

  • Content - シリアル化解除された JSON 応答。

  • Errors - SitecoreLayoutRequest オブジェクトの処理中および SitecoreLayoutResponse オブジェクトのビルド中に発生したエラーのリスト。

  • HasErrors - Errors リストが空でない場合、これは true です。

型とフィールド

Content は、次の型を使用します。

  • Route - レイアウト サービスによって返される JSON 応答内の Route オブジェクトにマッピングします。フィールドの型は、Dictionary<string, IFieldReader> です。

  • Component - プレースホルダーのリスト値のオブジェクトにマッピングします。フィールドの型は、Dictionary<string, IFieldReader> です。

  • IFieldReader - Route または Component 内のフィールド エントリにマッピングします。実装は、Newtonsoft などのシリアル化ライブラリによって提供されます。

  • IField - IField のさまざまな実装はレイアウト サービス クライアントによって提供されます。インターフェイスは、IFieldReader を介して読み取り可能な型を識別するためのマーカーとして使用されます。

レイアウト サービス クライアントは、次のフィールドを提供します。

  • CheckboxField - チェックボックス フィールド。

  • ContentListField - アイテム リンク フィールドのリスト。

  • DateField - 日付と時刻のフィールド。

  • FileField - ファイル フィールド。

  • HyperLinkField - リンク フィールド。

  • ImageField - 画像フィールド。

  • ItemLinkField - 単一アイテム フィールド。

  • NumberFieldc - 数値フィールド。

  • RichTextField - リッチ テキスト フィールド。

  • TextField - 単一行または複数行のテキスト フィールド。

フィールドは、複数のインターフェイスを実装して、次のようなさまざまなフィールド プロパティをエクスポーズできます。

  • IValueField<T> - T 型の Value プロパティをエクスポーズします。

  • IEditableField - 編集可能なフィールドの前後にマークアップをエクスポーズします。

構文

IFieldReader 型は、Read() メソッドをエクスポーズし、IField を実装する型が与えられると、IFieldReader からのデータが入力された型のインスタンスを返します。

Component および Route の両方は、Fields をエクスポーズする同じ基本実装を継承し、さらに以下をエクスポーズします。

  • ReadField() - IField および string 型を受け取り、指定されたフィールドを読み取ります。

  •  ReadFields() - プロパティ名とフィールド名が一致するすべてのフィールドが設定された任意の型を受け取ります。

ASP.NET のレイアウト サービス クライアントの設定

次の例は、アプリケーションの Startup クラスの ConfigureServices メソッドで、レイアウト サービス クライアントを ASP.NET レンダリング SDK と一緒に使用する方法を示しています。

RequestResponse
services 
  .AddRouting() 
  .AddMvc() 

  // Configure the required Newtonsoft.Json serialization behavior for use
  // with the Layout Service Client.
  // The Layout Service Client requires Json.NET due to limitations in System.Text.Json.
  .AddNewtonsoftJson(o => o.SerializerSettings.SetDefaults()); 

  // Register the Sitecore Layout Service Client,
  // which is used by the ASP.NET Rendering Engine.
  .AddSitecoreLayoutService() 

  // Configure the default parameters for Layout Service Client requests.
  .WithDefaultRequestOptions(request => 
  { 
    request 

      // Optional language configuration, if the application is not using localized routes.
      // .Language("en")

      // The name of the Sitecore site which this application is rendering.
      .SiteName("website")

      // The ID of the Sitecore Services Client API Key to access the Layout Service.
      .ApiKey("{00000000-0000-0000-0000-000000000000}");
  }) 

  // Provide the URL to the Layout Service on your Sitecore instance.
  // In production, this is typically a Content Delivery server.
  // In development, it might be a standalone combined Content Management
  // and Content Delivery instance.
  .AddHttpHandler("default", "https://<sitecore instance>/sitecore/api/layout/render/jss") 
  .AsDefaultHandler(); 

Do you have some feedback for us?

If you have suggestions for improving this article,