商品配信APIの基礎
製品 API の基礎 では、製品の作成と管理に使用される管理 API について説明します。 ストアフロントに商品データを表示するには、商品配信 API を使用する必要があります。 チャネルから単一の製品またはすべての製品を取得するには、 headless-commerce-delivery-catalog サービスを呼び出します。
チャネルから製品を入手する
新しいLiferay DXPインスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/dxp:2025.q1.6-lts
メールアドレス test@liferay.com とパスワード testを使用して、 http://localhost:8080 で Liferay にサインインします。 プロンプトが表示されたら、パスワードを learnに変更します。
次に、次の手順に従います。
-
Product Delivery API の基礎をダウンロードして解凍します。
curl https://resources.learn.liferay.com/commerce/latest/en/product-management/developer-guide/liferay-k9b9.zip -Ounzip liferay-k9b9.zip -
デフォルトでは、製品はすべてのチャネルで表示されます。 設定により可視性を制限できます。 詳細については、 「チャネルを使用した製品の表示設定 」を参照してください。
チャネル ID を見つけるには、 グローバル メニュー (
) を開き、 コマース → チャネルに移動します。 チャンネルを選択すると、その IDが表示されます。グローバル メニュー (
) を開き、 コマース → 製品に移動して製品 ID を見つけます。 製品を選択すると、その IDが表示されます。 -
cURL スクリプトを使用して、チャネルから製品を取得します。 コマンドラインで、
curlフォルダに移動します。 チャンネル ID と製品 ID をパラメータとして、Products_GET_ById.shスクリプトを実行します。1234をチャネル ID に置き換え、5678を製品 ID に置き換えます。./Products_GET_ById.sh 1234 5678JSON 応答には製品が表示されます。
{ "catalogName": "Minium", "createDate": "2024-11-11T13:15:37Z", "customFields": [], "description": "Product designed and manufactured to accommodate OEM applications. All\nproducts are tested and inspected in an ISO-9000 compliant environment", "expando": {}, "externalReferenceCode": "MIN93015minium-initializer", "id": 34309, "metaDescription": "", "metaKeyword": "", "metaTitle": "", "modifiedDate": "2024-11-11T13:35:41Z", "name": "ABS Sensor", "productConfiguration": { "allowBackOrder": true, "allowedOrderQuantities": [], "availabilityEstimateId": 34326, "availabilityEstimateName": "3-5 days", "inventoryEngine": "", "maxOrderQuantity": 10000, "minOrderQuantity": 1, "multipleOrderQuantity": 1 }, "productId": 34310, "productType": "simple", "shortDescription": "", "slug": "abs-sensor", "tags": [], "urlImage": "https://localhost:8080/o/commerce-media/default/?groupId=34197", "urls": { "en_US": "abs-sensor" } } -
Java クライアントを使用して REST サービスを呼び出すこともできます。
curlフォルダから、javaフォルダに移動します。 ソースファイルをコンパイルします。javac -classpath .:* *.java -
Products_GET_ByIdクラスを実行します。1234をチャネル ID に置き換え、5678を製品 ID に置き換えます。java -classpath .:* -DchannelId=1234 -DproductId=5678 Products_GET_ById
cURLコマンドの検証
Products_GET_ById.sh スクリプトは、cURL コマンドを使用して REST サービスを呼び出します。
curl \
"http://localhost:8080/o/headless-commerce-delivery-catalog/v1.0/channels/${1}/products/${2}" \
--user "test@liferay.com:learn"
ここでは、コマンドの引数を紹介します。
| 引数 | 説明 |
|---|---|
"http://localhost:8080/o/headless-commerce-delivery-catalog/v1.0/channels/${1}/products/${2}" | RESTサービスのエンドポイント |
-u "test@liferay.com:learn" | 基本的な認証情報 |
ここでは、デモのために基本的な認証を使用しています。 本番環境では、 OAuth2経由でユーザーを認証する必要があります。 OAuth2 を利用するサンプル React アプリケーションについては、 OAuth2 を使用してユーザーを承認する を参照してください。
Javaクラスを調べる
Products_GET_ById.java クラスは、製品関連のサービスを呼び出してチャネルから製品を取得します。
public static void main(String[] args) throws Exception {
ProductResource.Builder builder = ProductResource.builder();
ProductResource productResource = builder.authentication(
"test@liferay.com", "learn"
).build();
System.out.println(
productResource.getChannelProduct(
Long.valueOf(System.getProperty("channelId")),
Long.valueOf(System.getProperty("productId")), null));
}
このクラスは、次の3行のコードのみを使用してRESTサービスを呼び出します。
| 行(省略形) | 説明 |
|---|---|
ProductResource.Builder builder = ... | ProductResource サービスインスタンスを生成するための Builder を取得します。 |
ProductResource productResource = builder.authentication(...).build(); | 基本認証を指定し、 ProductResourceサービスインスタンスを生成します。 |
productResource.getChannelProduct(...); | productResource.getChannelProduct メソッドを呼び出し、パラメータを渡して製品を取得します。 |
プロジェクトには、依存関係としてcom.liferay.headless.commerce.delivery.catalog.client.jarファイルが含まれていることに注意してください。 すべてのRESTアプリケーションのクライアントJAR依存関係情報は、/o/apiでインストール先のAPIエクスプローラーで確認できます。
メイン メソッドのコメントは、クラスの実行を示しています。
他の Java クラスの例もこれに似ていますが、異なる ProductResource メソッドを呼び出します。
サービスの詳細については、 ProductResource を参照してください。
以下は、cURL と Java を使用して Product REST サービスを呼び出す別の例です。
チャネルからすべての製品を取得する
次の cURL または Java コマンドを実行すると、チャネルからすべての製品を取得できます。
Products_GET_FromChannels.sh
コマンド:
./Products_GET_FromChannels.sh
コード:
curl \
"http://localhost:8080/o/headless-commerce-delivery-catalog/v1.0/channels/${1}/products" \
--user "test@liferay.com:learn"
Products_GET_FromChannels.java
コマンド:
java -classpath .:* Products_GET_FromChannels
コード:
public static void main(String[] args) throws Exception {
ProductResource.Builder builder = ProductResource.builder();
ProductResource productResource = builder.authentication(
"test@liferay.com", "learn"
).build();
Page<Product> page = productResource.getChannelProductsPage(
Long.valueOf(System.getProperty("channelId")), null, null, null,
Pagination.of(1, 2), null);
System.out.println(page);
}
Product チャネル オブジェクトの出力は JSON です。
このAPIでは、製品のフィルタリング、ページ分割、検索、ソートを行うためのパラメーターも許可します。 詳細については、 getProductsPage メソッドを参照してください。 クエリでは、以下の製品フィールドを使用して、結果のフィルタリング、検索、ソートを行うことができます。
catalogIdcategoryIdscategoryNamescreateDateカスタムフィールドLiferay DXP 2024.Q4+/ポータル GA129+modifiedDatenameproductTypestatusCodetags
| フィルタークエリ | 説明 |
|---|---|
productType eq 'simple' | 製品種類がシンプル |
contains(name, 'Bar') | 製品名にBarを含む |
customFields/sampleSize eq '100.0' | カスタムフィールド名 sampleSize は 100 です |
| ソートクエリ | 説明 |
|---|---|
createDate:desc | createDate の降順で並べ替えます |
name:asc | 名前 で昇順に並べ替える |
createDate:desc,name:desc | まず createDate の降順で並べ替え、次に名前の降順で並べ替えます。 |
詳細については、 API クエリ パラメータ を参照してください。
上記の両方のエンドポイントには、オプションの accountId パラメータもあります。 ユーザーが複数のアカウントに属している場合は、これらの API を呼び出すときに accountId を渡す必要があります。