Using React
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

Headless APIによるリモートアプリケーション

7.4以降に対応

オブジェクトの作成と公開後、ヘッドレス REST API が自動的に生成されます。 ここでは、これらのエンドポイントを統合して、シンプルなCRUD(作成、読み取り、更新、削除)リモートアプリケーションを作成する方法について説明します。

Liferay DXPのセットアップ

新しいLiferay DXPインスタンスを起動し、以下を実行します。

docker run -it -m 8g -p 8080:8080 liferay/dxp:2025.q1.6-lts

http://localhost:8080 に、メールアドレス test@liferay.com とパスワード test を使用して Liferay にサインインします。 プロンプトが表示されたら、パスワードを learnに変更します。

次に、以下の手順に従って、 /o/c/* URL パターンを デフォルト ポータル CORS 設定 に追加します。

  1. グローバルメニュー (Global Menuを開き、 コントロールパネル タブをクリックし、 システム設定セキュリティツール に移動します。

  2. [Portal Cross-Origin Resource Sharing (CORS)]タブで、 [Default Portal CORS Configuration]をクリックしてください。

  3. URLパターン/o/c/* の値とともに追加し、 保存 をクリックします。 これにより、すべてのオブジェクトAPI に対してCORSが有効になります。

    オブジェクトAPI用の /o/c/* URL パターンを追加します。

CRUDアプリケーション用のオブジェクトを作成する

  1. グローバルメニュー (Global Menuを開き、 コントロールパネル タブをクリックし、 オブジェクト に移動します。

  2. 追加 ボタン (Add Button) をクリックし、以下の値を入力してください。

    項目
    ラベルJ4X7オブジェクト
    複数形のラベルJ4X7オブジェクト
    名前J4X7オブジェクト

    提供されているReactアプリケーションはこれらの値を使用します。

  3. 新しい オブジェクト ドラフトを選択し、 フィールド タブをクリックして、これらの フィールド を追加します。

    ラベル項目名種類
    名前名前テキストボックス
    説明説明テキストボックス
  4. 詳細 タブをクリックし、 公開 をクリックします。

CRUDアプリケーションのセットアップ

  1. CRUD アプリケーション をダウンロードして解凍します。

    curl https://resources.learn.liferay.com/examples/liferay-j4x7.zip -O
    
    unzip liferay-j4x7.zip
    
    cd liferay-j4x7
    
  2. node>とyarnがインストールされていることを確認します。 そうでない場合は、以下のコマンドを実行し、プロンプトに従います。

    ./setup_tutorial.sh
    
  3. CRUDアプリケーションのフォルダに移動し、Reactサーバーを起動します。

    cd j4x7-custom-element
    
    yarn start
    

    起動したら、 localhost:3000 にアクセスし、CRUDアプリケーションを表示します。

  4. 名前と説明を入力し、 追加 をクリックして、J4X7オブジェクトを追加します。 新しい項目が追加されました。

    名前と説明を入力して、追加をクリックします。

  5. 先ほど作成したJ4X7オブジェクトのID番号をメモしておいてください。 ID番号と新しい名前および説明を入力します。 をクリックしてパッチ を貼ってください。 項目は新しい名前と説明で更新されました。

  6. 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.jsgetObjects メソッドを呼び出し、レスポンスを JSON として解析します。 J4X7の各エントリーは、フォームごとに一覧表示されます。

AddForm.js は入力を受け取り、ユーザーが Add をクリックすると、 addObject メソッドを呼び出します。

PatchForm.jsは入力を受け取り、ユーザがPatchをクリックするとpatchObjectメソッドを呼び出します。

DeleteForm.js は入力を受け取り、ユーザーが Delete をクリックすると、 deleteObject メソッドを呼び出します。

フォームは、 App.js ファイルとともに 1 つのページにまとめられて表示されます。