OCAPI 展開 23.1

ネットワークトラフィックとサーバーの CPU 使用率を最小限に抑えるために、Open Commerce API は 展開 (expansion) と呼ばれる手法を使用する場合があります。この手法は、選択されたリソースの一部を意図的に省略することで、全体的なレスポンスのサイズを減らします。ただし、デフォルトで省略される部分を含めたい場合は、expand クエリパラメーターを使用して、省略部分を明示的にリクエストできます。このパラメーターで、展開したいエンティティのコンマ区切りリストを指定し、各エンティティを名前で識別します。

この展開手法は、productsproduct_search リソースでサポートされています。展開を可能にするリソースタイプは、1 つのベースリソースと、1 つまたは複数のサブリソースで構成されます。*products* リソースの場合、ベースリソースは */products/{id}*、およびその 2 つのサブリソースは */products/{id}/prices**/products/{id}/variations* です。

デフォルトでは、ベースリソースは基本的なプロパティのサブセットのみを返します。サブリソースはベースプロパティのみならず、サブリソース固有のプロパティ (価格プロパティなど) も返します。サブリソースの名前は、expand クエリパラメーター値として使用されます。

以下の例で、展開の仕組みを説明します。

ベースリソース 

expand パラメーターが指定されていないベースリソースへのリクエスト。レスポンスドキュメントには一部の基本的なプロパティのみが含まれます。

1REQUEST:
2GET /dw/shop/v23_1/products/123 HTTP/1.1
3
4RESPONSE:
5HTTP/1.1 200 OK
6Content-Length: 67
7Content-Type: application/json; charset=UTF-8
8Cache-Control: max-age=60,must-revalidate
9
10{
11  "id":"123",
12  "name":"Ultimate T-Shirt XXXL"
13}

サブリソース 

別々のサブリソースへの 2 つのリクエスト。サブリソースのレスポンスドキュメントには、基本的なプロパティに加えて、サブリソース固有のプロパティが含まれます。

1REQUEST 1:
2GET /dw/shop/v23_1/products/123/availability HTTP/1.1
3
4RESPONSE 1:
5HTTP/1.1 200 OK
6Content-Length: 67
7Content-Type: application/json; charset=UTF-8
8Cache-Control: max-age=60,must-revalidate
9
10{
11  "id":"123",
12  "name":"Ultimate T-Shirt XXXL",
13  "orderable":true
14}
1REQUEST 2:
2GET /dw/shop/v23_1/products/123/prices HTTP/1.1
3
4RESPONSE 2:
5HTTP/1.1 200 OK
6Content-Length: 67
7Content-Type: application/json; charset=UTF-8
8Cache-Control: max-age=60,must-revalidate
9
10{
11  "id":"123",
12  "name":"Ultimate T-Shirt XXXL",
13  "price":14.65
14}

expand プロパティを使用したベースリソース 

expand パラメーターを使用した 1 つのリクエスト。レスポンスドキュメントには、基本的なプロパティに加えて、expand パラメーター値で名前が指定された各サブリソース固有のプロパティが含まれます。

1REQUEST:
2GET /dw/shop/v23_1/products/123?expand=availability,prices HTTP/1.1
3
4RESPONSE:
5HTTP/1.1 200 OK
6Content-Length: 67
7Content-Type: application/json; charset=UTF-8
8Cache-Control: max-age=60,must-revalidate
9
10{
11  "id":"123",
12  "name":"Ultimate T-Shirt XXXL",
13  "orderable":true,
14  "price":14.65
15}

DID THIS ARTICLE SOLVE YOUR ISSUE?
Let us know so we can improve!