ヘッドレスAPIを使用したリモートアプリケーション
7.4以降に対応
オブジェクトの作成と公開後、ヘッドレス REST API が自動的に生成されます。 ここでは、これらのエンドポイントを統合して、シンプルなCRUD(作成、読み取り、更新、削除)リモートアプリケーションを作成する方法について説明します。
Liferay DXP をセットアップする
Liferay DXP の新しいインスタンスを起動するには、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/dxp:2026.q1.9-lts
http://localhost:8080 に、メールアドレス test@liferay.com とパスワード test を使用して Liferay にサインインします。 プロンプトが表示されたら、パスワードを learn に変更してください。
次に、以下の手順に従って、 /o/c/* URL パターンを デフォルト ポータル CORS 設定 に追加します。
-
グローバルメニュー (
) を開き、 コントロールパネル → システム設定 → セキュリティツール に移動します。 -
ポータルクロスオリジンリソース共有(CORS) タブに移動し、 デフォルトのポータルCORS構成をクリックします。
-
URLパターン を
/o/c/*の値とともに追加し、 保存 をクリックします。 これにより、すべてのオブジェクトAPIでCORSが有効になります。
CRUDアプリケーション用のオブジェクトを作成する
-
グローバルメニュー (
) を開き、 コントロールパネル → オブジェクト に移動します。 -
追加 ボタン (
) をクリックし、以下の値を入力してください。分野 値 ラベル J4X7オブジェクト 複数形ラベル J4X7オブジェクト 名前 J4X7オブジェクト 注記提供されているReactアプリケーションはこれらの値を使用します。
-
新しい オブジェクト ドラフトを選択し、 フィールド タブをクリックして、これらの フィールド を追加します。
ラベル フィールド名 タイプ 名前 名前 文章 説明 説明 文章 -
詳細 タブをクリックし、 公開 をクリックします。
CRUDアプリケーションの設定
-
CRUD アプリケーション をダウンロードして解凍します。
curl https://resources.learn.liferay.com/examples/liferay-j4x7.zip -Ounzip liferay-j4x7.zipcd liferay-j4x7 -
nodeとyarnがインストールされていることを確認してください。 そうでない場合は、以下のコマンドを実行し、画面の指示に従ってください。./setup_tutorial.sh -
CRUDアプリケーションのフォルダに移動し、Reactサーバーを起動します。
cd j4x7-custom-element糸のスタート起動したら、
localhost:3000にアクセスして CRUD アプリケーションを表示します。 -
名前と説明を入力し、 追加 をクリックして J4X7 オブジェクトを追加します。 新しいアイテムが追加されました。

-
先ほど作成したJ4X7オブジェクトのID番号をメモしておいてください。 ID番号と新しい名前、説明を入力してください。 をクリックしてパッチ を貼ってください。 商品名と説明文が新しくなりました。
-
ID番号を入力して、 削除 をクリックしてください。 当該アイテムは削除されました。
規約を検証する
サンプルCRUDアプリケーションは、APIリクエストを含むファイルと、CRUD操作を処理するためのフォームを含むファイルの2つの部分に分かれています。
リクエストを処理する
Requests.js ファイルは、JavaScript の組み込みの fetch() メソッドを使用します。
getObjects() は、すべてのオブジェクトに対して GET リクエストを行います。
export const getObjects = () => {
return fetch(`http://localhost:8080/o/c/j4x7objects/`, {
headers: {
Authorization: 'Basic ' + btoa('test@liferay.com:learn'),
'Content-Type': 'application/json',
},
method: 'GET',
});
};
addObject() は、新しいオブジェクトの名前と説明を含む POST リクエストを作成します。
export const addObject = object => {
return fetch(`http://localhost:8080/o/c/j4x7objects/`, {
body: JSON.stringify({
description: object.description,
name: object.name,
}),
headers: {
Authorization: 'Basic ' + btoa('test@liferay.com:learn'),
'Content-Type': 'application/json',
},
method: 'POST',
});
};
patchObject() は、特定のオブジェクト ID と新しい名前および説明を使用して PATCH リクエストを作成します。
export const patchObject = object => {
return fetch(`http://localhost:8080/o/c/j4x7objects/${object.id}`, {
body: JSON.stringify({
description: object.description,
name: object.name,
}),
headers: {
Authorization: 'Basic ' + btoa('test@liferay.com:learn'),
'Content-Type': 'application/json',
},
method: 'PATCH',
});
};
deleteObject() は、特定のオブジェクト ID で DELETE リクエストを行います。
export const deleteObject = id => {
return fetch(`http://localhost:8080/o/c/j4x7objects/${id}`, {
headers: {
Authorization: 'Basic ' + btoa('test@liferay.com:learn'),
'Content-Type': 'application/json',
},
method: 'DELETE',
});
};
ここでは、デモンストレーション目的で基本認証を使用しています。 本番環境では、 OAuth 2.0 を介してユーザーを認証する必要があります。 OAuth2 を使用する React アプリケーションの例については、 OAuth2 を使用してユーザーを認証する を参照してください。
フォームを実装する
GetForm.js は getObjects メソッドを呼び出し、レスポンスを JSON として解析します。 J4X7の各項目は、フォームごとに一覧表示されます。
AddForm.js は入力を受け取り、ユーザーが Add をクリックすると、 addObject メソッドを呼び出します。
PatchForm.jsは入力を受け取り、ユーザがPatchをクリックするとpatchObjectメソッドを呼び出します。
DeleteForm.js は入力を受け取り、ユーザーが Delete をクリックすると、 deleteObject メソッドを呼び出します。
フォームは、 App.js ファイルとともに 1 つのページにまとめられて表示されます。