リンク ヘルパー

Current version: 4.0

JavaScript SDK には、REST API リンク (URL) の構築と解析を目的としたリンク ヘルパーがあります。

この記事で取り上げる例は 1 つのみですが、手順はすべてのリンクで同様です。 詳細な概要については、API のドキュメントを参照してください。

まず、リンクの解析と構築の機能について説明し、次にそれらの処理をリンク ヘルパーで実行する方法を紹介します。

リンク

Link オブジェクトは、Hypertext Application Language (HAL) 形式を使用してリソースへのリンクを表します。

リンクはテンプレート化できます。つまり、リンクを使用する前にバインドを必要とする変数を使用できます。 たとえば、エンティティのテンプレートである Link オブジェクトは次のようになります。

RequestResponse
Template = true
Title = "Get the entity with the specified id"
Uri = "http://contenthub_url/api/entities/{id}{?culture,members,groups,renditions,nestedRelations,loadPermissions}"

次のように、このテンプレートをフェッチできます。

RequestResponse
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" になります。これは前のセクションで入力した値と一致しています。

RequestResponse
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 のエンティティへのリンク オブジェクトが作成されます。

RequestResponse
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 のみが返されるようにする場合は次のスニペットを使用します。

RequestResponse
var entityId : number = await client.linkHelper.idFromEntityAsync(entityLink);

上記で作成したリンクを渡すと、得られる結果は 1000 になります。

Do you have some feedback for us?

If you have suggestions for improving this article,