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

製品配信APIの基本

製品APIの基本 では、製品の作成と管理に使用される管理者APIについて説明します。 ストアフロントに商品データを表示するには、商品配信APIを使用する必要があります。 headless-commerce-delivery-catalog サービスを呼び出して、チャネルから単一の製品またはチャネルからすべての製品を取得します。

チャネルから製品を入手する

新しい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に変更します。

それでは、以下の手順に従ってください。

  1. 製品配信 API の基本 をダウンロードして解凍します。

    curl https://resources.learn.liferay.com/commerce/latest/en/product-management/developer-guide/liferay-k9b9.zip -O
    
    unzip liferay-k9b9.zip
    
  2. デフォルトでは、商品はすべてのチャネルで表示されます。 設定によって表示範囲を制限できます。 詳細については、 チャネルを使用した製品の可視性の設定 を参照してください。

    グローバルメニュー (Applications Menu icon) を開き、 コマースチャネル に移動して、チャネル ID を見つけます。 チャンネルを選択すると、その ID が表示されます。

    グローバルメニュー (Applications Menu icon) を開き、 コマース製品 に移動して、製品 ID を見つけます。 商品を選択すると、その商品の ID が表示されます。

  3. cURLスクリプトを使用して、チャネルから製品を取得します。 コマンドラインで、curlフォルダに移動します。 Products_GET_ById.sh スクリプトを、チャネル ID と製品 ID をパラメータとして実行します。 1234 をチャンネル ID に、 5678 を製品 ID に置き換えてください。

    ./Products_GET_ById.sh 1234 5678
    

    JSONレスポンスには製品が表示されます。

    {
       "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"
       }
    }
    
  4. Javaクライアントを使用してRESTサービスを呼び出すこともできます。 curl フォルダから、 java フォルダに移動します。 ソースファイルをコンパイルします。

    javac -classpath .:* *.java
    
  5. 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 クラスは、 ProductResource サービスを呼び出すことにより、チャネルから製品を取得します。

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エクスプローラーで確認できます。

main メソッドのコメントは、クラスを実行する方法を示しています。

もう1つのJavaクラスの例はこれに似ていますが、別の ProductResource メソッドを呼び出します。

重要

サービスの詳細については、 ProductResource を参照してください。

以下は、cURLとJavaを使用して 製品 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 メソッドを参照してください。 クエリでは、以下の製品フィールドを使用して、結果のフィルタリング、検索、ソートを行うことができます。

  • catalogId
  • categoryIds
  • categoryNames
  • createDate
  • customFields Liferay DXP 2024.Q4+/Portal GA129+
  • modifiedDate
  • name
  • productType
  • statusCode
  • tags
フィルタークエリ説明
productType eq 'simple'製品種類がシンプル
contains(name, 'Bar')製品名にBarを含む
customFields/sampleSize eq '100.0'sampleSize という名前のカスタムフィールドは 100 に等しい。
ソートクエリ説明
createDate:desccreateDate で降順に並べ替え
name:asc名前 で昇順に並べ替え
createDate:desc,name:descまず createDate で降順に並べ替え、次に名前で降順に並べ替えます。

詳細については、 APIクエリパラメータ をお読みください。

重要

上記のエンドポイントはどちらも、オプションの accountId パラメータを持っています。 ユーザーが複数のアカウントに属している場合、これらの API を呼び出す際に accountId を渡す必要があります。