リンク ヘルパー
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
JavaScript SDK には、REST API リンク (URL) の構築と解析を目的としたリンク ヘルパーがあります。
この記事で取り上げる例は 1 つのみですが、手順はすべてのリンクで同様です。 詳細な概要については、API のドキュメントを参照してください。
まず、リンクの解析と構築の機能について説明し、次にそれらの処理をリンク ヘルパーで実行する方法を紹介します。
リンク
Link
オブジェクトは、Hypertext Application Language (HAL) 形式を使用してリソースへのリンクを表します。
リンクはテンプレート化できます。つまり、リンクを使用する前にバインドを必要とする変数を使用できます。 たとえば、エンティティのテンプレートである Link
オブジェクトは次のようになります。
Template = true
Title = "Get the entity with the specified id"
Uri = "http://contenthub_url/api/entities/{id}{?culture,members,groups,renditions,nestedRelations,loadPermissions}"
次のように、このテンプレートをフェッチできます。
import { ApiRoutesDictionary } from "@sitecore/sc-contenthub-webclient-sdk/dist/api/api-routes-dictionary";
import Link from "@sitecore/sc-contenthub-webclient-sdk/dist/link";
var routes: ApiRoutesDictionary = await client.api.getApiRoutesAsync();
var entityByIdTemplate: Link = routes["entity_by_id"];
Constants.Api.EntityById.TemplateName
には "entity_by_id"
を指定しています。
リンクの手動解析
作成した URL は、Uri
クラスの getVariableValue
メソッドを使用して解析できます。 この解析には、上記のリンク テンプレートも必要です。 このメソッドの結果は、次のように "1000"
になります。これは前のセクションで入力した値と一致しています。
import Link from "@sitecore/sc-contenthub-webclient-sdk/dist/link";
import { ApiRoutesDictionary } from "@sitecore/sc-contenthub-webclient-sdk/dist/api/api-routes-dictionary";
var routes: ApiRoutesDictionary = await client.api.getApiRoutesAsync();
var entityByIdTemplate: Link = routes["entity_by_id"];
var link = new Link("http://contenthub_url/api/entities/1000")
var id: string = link.getVariableValue(entityByIdTemplate, "id");
リンクの構築
リンクの手動解析には手間と時間を要することがあるので、リンク ヘルパーの使用をお勧めします。
次のスニペットでは、ID が 1000 のエンティティへのリンク オブジェクトが作成されます。
import Link from "@sitecore/sc-contenthub-webclient-sdk/dist/link";
var entityLink: Link = await client.linkHelper.entityToLinkAsync(entityId);
JavaScript SDK を 、 <contenthub_url>, に接続している場合、 entityLink.Uri
は <contenthub_url/api/entities/1000>を指します。
リンクの解析
エンティティ リンクからエンティティ ID のみが返されるようにする場合は次のスニペットを使用します。
var entityId : number = await client.linkHelper.idFromEntityAsync(entityLink);
上記で作成したリンクを渡すと、得られる結果は 1000 になります。