OCAPI プロパティ選択 23.1

プロパティセレクターを使用すると、API によって取得されるリソースプロパティの数を減らすことができます。このため、必要なプロパティのみを取得すると同時に、ネットワーク帯域幅を削減できます。

リクエストで select パラメーターを設定することで、すべてのリソースタイプに対してプロパティセレクターを指定できます。実際のセレクター値は、かっこで囲む必要があります。次の表に、プロパティセレクターの機能と、対応する select パラメーター値をリストします:

機能select パラメーターの値
複合プロパティを含む、すべてのレベルのプロパティを含めます。(**)
複合プロパティを除く、トップレベルのプロパティを含めます。(*)
1 つのプロパティを含めます。(price) (+price)
1 つのプロパティを除外します。(-price)
下位ドキュメントプロパティを含めます。(variation_attributes.(**))
配列内の最初のドキュメントのみを返します。インデックスは 0 から始まります。(variation_attributes[0].(**))
配列内の最初の 5 つのドキュメントのみを返します。インデックスは 0 から始まります。(variation_attributes[0:4].(**))
配列内の 2 番目、4 番目、および 6 番目のドキュメントのみを返します。インデックスは 0 から始まります。(variation_attributes[1,3,5].(**))
フィルターに一致する配列内のドキュメントのみを返します。フィルター式の構文は ?(_boolean_expression_) です。サポートされる演算子: ==, !=, <=, >=, <, >(variation_attributes[?(@.name==‘color’)].(**))
フィルターで OR (||) および AND (&&) を組み合わせます。(variation_attributes[?(@.name==‘color’ && @.id==‘size’)].(**))

1 つのプロパティ名、あるいはかっこで囲ったプロパティ名のコンマ区切りリストを指定できます。次の例で、商品リソースインスタンスの nameid、および variation_attributes プロパティの選択方法を示します:

1REQUEST:
2GET /dw/shop/v23_1/products/123/variations?select=(name,id,variation_attributes.(**)) HTTP/1.1
3Host: example.com
4Accept: application/json
5
6RESPONSE:
7HTTP/1.1 200 OK
8Content-Length: 29
9Content-Type: application/json; charset=UTF-8
10
11{
12  "_v" : "23.1",
13  "name":"foo",
14  "id":"123",
15  "variation_attributes":[{
16    "id":"color",
17    "name":"Color",
18    "values":[{
19       "value":"red",
20       "name":"Red",
21       "description":""
22    },
23    {
24       "value":"blue",
25       "name":"Blue",
26       "description":""
27    }]
28  },
29  {
30    "id":"size",
31    "name":"Size",
32    "values":[{
33       "value":"M",
34       "name":"Medium",
35       "description":""
36    },
37    {
38       "value":"L",
39       "name":"Large",
40       "description":""
41    }]
42  }]
43}

下位のプロパティを選択するには、結果のすべてのレベルを正確に指定する必要があります。次の例では、取得される注文レコードのフィールドを選択してそのフィールドで並べ替えを行うために 3 レベルの深さまで検索を行う、フィルタリング注文検索を示しています。

1REQUEST:
2POST /dw/shop/v23_1/order_search HTTP/1.1
3Host: example.com
4Accept: application/json
5{
6  "query" : {
7    "filtered_query": {
8      "filter": {
9        "range_filter": {
10          "field": "creation_date",
11          "from": "2020-03-08T00:00:00.000Z",
12          "to": "2020-03-10T00:00:00.000Z"
13        }
14      },
15      "query" : {
16        "match_all_query": {}
17      }
18    }
19  },
20  "select" : "(hits.(data.(creation_date,confirmation_status,total)))",
21  "sorts" : [{"field":"creation_date", "sort_order":"asc"}]
22}
23
24
25RESPONSE:
26HTTP/1.1 200 OK
27Content-Length: 29
28Content-Type: application/json; charset=UTF-8
29
30{
31  "_v":"23.1",
32  "_type":"order_search_result",
33  "hits": [
34    {
35      "_type":"order_search_hit",
36      "data": {
37        "_type":"order",
38        "creation_date":"2020-03-08T04:15:00.000Z",
39        "confirmation_status":"confirmed",
40        "total":19.95
41      }
42    },
43    {
44      "_type":"order_search_hit",
45      "data": {
46        "_type":"order",
47        "creation_date":"2020-03-08T07:30:00.000Z",
48        "confirmation_status":"confirmed",
49        "total":75.29
50      }
51    }
52  ]
53}

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