外部参照コードの使用
Liferay DXP/Portal 7.4以降
LiferayのヘッドレスAPIエンドポイントの多くは、外部参照コード(ERC)をサポートしています。 ERCフィールドは、幅広いシナリオで有用です。 例えば、コンテンツをLiferayに移行する際、ERCフィールドに別のシステムからの固有の参照IDを保持することができます。 または、ERCを使用して、サイトコンテンツ用の人間が読みやすいキーを作成することもできます。 例えば、Liferayは作成されたブログ記事ごとに一意のIDを割り当てますが、参照を容易にするために人間が読みやすいキーを割り当てることもできます。
Liferay DXP 2025.Q3以降では、 {siteId} を使用するAPIエンドポイントは、サイトのキーまたは外部参照コードでも動作します。 値が矛盾する場合は、次の順序で解決されます。
- サイトキー
- サイトID
- サイト外部参照コード
各ERCは一意である必要があり、同じERCを同じスコープ内の別のエンティティで使用することはできません。 例えば、同じサイト上のブログ記事と文書は、同じERCを持つことはできません。 保存時に、 重複エントリ エラーが表示されます。
ERC を URL パラメータとして使用する場合、 予約文字 はエンコードする必要があります。 これには、エンドポイント URL でスラッシュ付きの外部参照コード (/) を使用することが含まれます。
ブログ記事 ERCの例
ERCを使用してブログ記事を作成およびアクセスします。
-
サイトの ID をメモしてください。
-
新しいブログ記事を作成するには、以下のcurlコマンドを実行してください。
{siteId}をあなたのサイトの ID に置き換えてください。curl \ -H "Content-Type: application/json" \ -X POST \ "http://localhost:8080/o/headless-delivery/v1.0/sites/{siteId}/blog-postings" \ -d "{\"articleBody\": \"Foo\", \"externalReferenceCode\": \"blog_post_able\", \"headline\": \"Able\"}" \ -u "test@liferay.com:learn"出力結果には、新しいブログ記事が作成されたことが示されています。
... "alternativeHeadline" : "", "articleBody" : "Foo", "creator" : { "additionalName" : "", "contentType" : "UserAccount", "familyName" : "Test", "givenName" : "Test", "id" : 20123, "name" : "Test Test" }, "customFields" : [ ], "dateCreated" : "2023-09-21T21:21:48Z", "dateModified" : "2023-09-21T21:21:48Z", "datePublished" : "2023-09-21T21:21:00Z", "description" : "Foo", "encodingFormat" : "text/html", "externalReferenceCode" : "blog_post_able", "friendlyUrlPath" : "able", "headline" : "Able", "id" : 42617, "keywords" : [ ], "numberOfComments" : 0, "relatedContents" : [ ], "renderedContents" : [ ], "siteId" : 20119, "taxonomyCategoryBriefs" : [ ] ... -
このブログ記事は、IDまたはERCで参照できるようになりました。 例えば、ブログ記事をIDで取得するには、次のようにします。
curl \ "http://localhost:8080/o/headless-delivery/v1.0/blog-postings/42617" \ -u "test@liferay.com:learn"または、ERCコードでブログ記事を取得します。
curl \ "http://localhost:8080/o/headless-delivery/v1.0/sites/20119/blog-postings/by-external-reference-code/blog_post_able" \ -u "test@liferay.com:learn"ERC によるブログ投稿のこの GET メソッドには、サイト ID (例:
20119) と ERC (例:blog_post_able) が必要です。
ERCによるフェッチはデータベースに直接クエリを実行するため、作成トランザクションがコミットされるとすぐにエンティティを返します。 エンティティを作成し、次のステップでそれを読み取ったりリンクしたりする場合、フィルタリングされたコレクションクエリとは異なり、この読み取りパスは即座に実行されます。 データ取得: 検索インデックスとデータベースの比較 を参照してください。
API Explorer をチェックして、外部参照コードをサポートするさまざまな API エンドポイントを確認してください。