Zoeken met REST-eindpunten | Handleiding voor Adobe Commerce-ontwikkelaars


Voor POST-, PUT- en DELETE-verzoeken aan de REST Web API moeten de parameters van de servicemethode zich in de hoofdtekst van het verzoek bevinden. Als u bijvoorbeeld een klant wilt maken, geeft u een JSON-array (of XML-structuur) op in de hoofdtekst van het bericht.

Voor zoek-API’s die a . aanroepen *Repository::getList(SearchCriteriaInterface *) call, moeten de zoekcriteria worden opgegeven in de URL van het GET-verzoek. Het basispatroon voor het specificeren van de criteria is:

1
2
3
searchCriteria[filter_groups][<index>][filters][<index>][field]=<field_name>
searchCriteria[filter_groups][<index>][filters][<index>][value]=<search_value>
searchCriteria[filter_groups][<index>][filters][<index>][condition_type]=<operator>

waar:

  • field is een attribuutnaam.
  • value specificeert de waarde waarnaar moet worden gezocht.
  • condition_type is een van de volgende waarden:
Voorwaarde Opmerkingen:
eq gelijk aan
finset Een waarde binnen een reeks waarden
from Het begin van een reeks. Moet worden gebruikt met to.
gt Groter dan
gteq Groter dan of gelijk aan
in In. De value kan een door komma’s gescheiden lijst met waarden bevatten.
like Leuk vinden. De value kan de SQL-jokertekens bevatten wanneer like is gespecificeerd.
lt Minder dan
lteq Minder dan of gelijk
moreq Meer of gelijk
neq Niet gelijk
nfinset Een waarde die niet binnen een reeks waarden valt.
nin Niet binnen value kan een door komma’s gescheiden lijst met waarden bevatten.
nlike Niet zoals
notnull Niet nul
null Nul
to Het einde van een reeks. Moet worden gebruikt met from.

condition_type is optioneel als de operator is eq.

De filter_groups array definieert een of meer filters. Elk filter definieert een zoekterm, en de field, valueen condition_type van een zoekterm moet hetzelfde indexnummer worden toegewezen, te beginnen met 0. Verhoog indien nodig aanvullende termen.

Houd bij het samenstellen van een zoekopdracht rekening met het volgende:

  • Om een ​​logische OR uit te voeren, specificeert u meerdere filters binnen een filter_groups.
  • Om een ​​logische AND uit te voeren, specificeert u meerdere filter_groups.
  • U kunt geen logische OR uitvoeren over verschillende filter_groupszoals (A AND B) OR (X AND Y). OR’s kunnen alleen worden uitgevoerd in de context van een enkele filter_groups.
  • U kunt alleen zoeken op kenmerken op het hoogste niveau.

De volgende secties bevatten voorbeelden van elk type zoekopdracht. Deze voorbeelden gebruiken de Magento Open Source voorbeeldgegevens.

De voorbeeldgegevens van Magento Open Source gebruiken de category_gear veld om de categorieën te beschrijven voor elk item dat wordt vermeld onder Uitrusting in de voorbeeldwinkel. Elk item kan aan meerdere categorieën worden toegewezen. Elektronica krijgt de code 86 toegewezen. Het volgende voorbeeld retourneert alle apparatuur die is gelabeld als elektronica.

1
2
3
4
GET <host>/rest/<store_code>/V1/products/?
searchCriteria[filter_groups][0][filters][0][field]=category_gear&
searchCriteria[filter_groups][0][filters][0][value]=86&
searchCriteria[filter_groups][0][filters][0][condition_type]=finset

Het systeem maakt een array, zoals weergegeven in de volgende pseudo-code.

1
2
3
4
5
6
7
8
9
10
11
12
searchCriteria => [
  'filterGroups' => [
    0 => [
      'filters' => [
         0 => [
           'field' => 'category_gear',
           'value' => '86',
           'condition_type' => 'finset'
         ]
      ]
    ]
  ]

De query retourneert 9 items.

Eenvoudig zoeken met een tijdstempel

De volgende zoekopdracht vindt alle facturen die na de opgegeven tijd (middernacht, 1 juli 2016) zijn aangemaakt. U kunt een vergelijkbare zoekopdracht instellen om periodiek uit te voeren om te peilen naar wijzigingen.

1
2
3
4
GET <host>/rest/<store_code>/V1/invoices?
searchCriteria[filter_groups][0][filters][0][field]=created_at&
searchCriteria[filter_groups][0][filters][0][value]=2016-07-01 00:00:00&
searchCriteria[filter_groups][0][filters][0][condition_type]=gt

Eenvoudig zoeken met een in type voorwaarden:

De volgende zoekopdracht vindt alle producten die in het waardeveld worden aangeboden. Wanneer u de . specificeert in voorwaarde type, moet het waardeveld een door komma’s gescheiden lijst zijn.

1
2
3
4
GET <host>/rest/<store_code>/V1/products?
searchCriteria[filter_groups][0][filters][0][field]=entity_id&
searchCriteria[filter_groups][0][filters][0][value]=1,2,3,4,5&
searchCriteria[filter_groups][0][filters][0][condition_type]=in

De query retourneert 5 items.

In het volgende voorbeeld wordt gezocht naar alle producten waarvan de naam de tekenreeks bevat Leggings of Parachute. de voorbeelden van %25 in het voorbeeld worden omgezet in het SQL-jokerteken %.

1
2
3
4
5
6
7
GET <host>/rest/<store_code>/V1/products?
searchCriteria[filter_groups][0][filters][0][field]=name&
searchCriteria[filter_groups][0][filters][0][value]=%25Leggings%25&
searchCriteria[filter_groups][0][filters][0][condition_type]=like&
searchCriteria[filter_groups][0][filters][1][field]=name&
searchCriteria[filter_groups][0][filters][1][value]=%25Parachute%25&
searchCriteria[filter_groups][0][filters][1][condition_type]=like

Het systeem maakt een array, zoals weergegeven in de volgende pseudo-code.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
searchCriteria => [
  'filterGroups' => [
    0 => [
      'filters' => [
         0 => [
           'field' => 'name',
           'value' => '%25Leggings%25',
           'condition_type' => 'like'
         ]
         1 => [
           'field' => 'name',
           'value' => '%25Parachute%25',
           'condition_type' => 'like'
         ]
      ]
    ]
  ]

De zoekopdracht levert 14 producten op die de string bevatten Leggings in de name veld en 14 producten die de tekenreeks bevatten Parachute.

Dit voorbeeld zoekt naar damesshorts met maat 31 en kost minder dan $ 30. In de CE-voorbeeldgegevens hebben damesshorts een sku waarde die begint met WSH. De sku bevat ook de grootte en kleur, zoals: WSH02-31-Yellow.

1
2
3
4
5
6
7
GET <host>/rest/<store_code>/V1/products?
searchCriteria[filter_groups][0][filters][0][field]=sku&
searchCriteria[filter_groups][0][filters][0][value]=WSH%2531%25&
searchCriteria[filter_groups][0][filters][0][condition_type]=like&
searchCriteria[filter_groups][1][filters][0][field]=price&
searchCriteria[filter_groups][1][filters][0][value]=30&
searchCriteria[filter_groups][1][filters][0][condition_type]=lt

Het systeem maakt een array, zoals weergegeven in de volgende pseudo-code.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
searchCriteria => [
  'filterGroups' => [
    0 => [
      'filters' => [
         0 => [
           'field' => 'sku',
           'value' => 'WSH%31%',
           'condition_type' => 'like'
         ]
    1 => [
      'filters' => [
         0 => [
           'field' => 'price',
           'value' => '30',
           'condition_type' => 'lt'
         ]
      ]
    ]
  ]

De query retourneert 9 items.

Dit voorbeeld is vergelijkbaar met het logische EN-voorbeeld. Het zoekt de skus voor damesshorts (WSH%) of broeken (WP%) in maat 29. Het systeem voert twee logische AND’s uit om de resultaten te beperken tot die tussen $ 40 en $ 49,99

1
2
3
4
5
6
7
8
9
10
11
12
13
GET <host>/rest/<store_code>/V1/products?
searchCriteria[filter_groups][0][filters][0][field]=sku&
searchCriteria[filter_groups][0][filters][0][value]=WSH%2529%25&
searchCriteria[filter_groups][0][filters][0][condition_type]=like&
searchCriteria[filter_groups][0][filters][1][field]=sku&
searchCriteria[filter_groups][0][filters][1][value]=WP%2529%25&
searchCriteria[filter_groups][0][filters][1][condition_type]=like&
searchCriteria[filter_groups][1][filters][0][field]=price&
searchCriteria[filter_groups][1][filters][0][value]=40&
searchCriteria[filter_groups][1][filters][0][condition_type]=from&
searchCriteria[filter_groups][2][filters][0][field]=price&
searchCriteria[filter_groups][2][filters][0][value]=49.99&
searchCriteria[filter_groups][2][filters][0][condition_type]=to

De query retourneert 37 items.

Andere zoekcriteria

De volgende zoekcriteria kunnen worden gebruikt om de sorteervolgorde en het aantal items te bepalen dat moet worden geretourneerd.

  • searchCriteria[sortOrders][<index>][field]=<field-name> – Specificeert het veld waarop moet worden gesorteerd. Standaard worden zoekresultaten in aflopende volgorde geretourneerd. U kunt op meerdere velden sorteren. Om bijvoorbeeld te sorteren op price eerst en dan door nametelefoongesprek searchCriteria[sortOrders][0][field]=price&searchCriteria[sortOrders][1][field]=name.

  • searchCriteria[sortOrders][<index>][direction]=ASC | DESC – Specificeert of resultaten in oplopende (ASC) of aflopende (DESC) volgorde moeten worden geretourneerd. Om het vorige voorbeeld uit te breiden en de . te sorteren price velden in aflopende volgorde en de name velden in oplopende volgorde, bel searchCriteria[sortOrders][0][field]=price&searchCriteria[sortOrders][1][field]=name&searchCriteria[sortOrders][1][direction]=ASC.

  • searchCriteria[pageSize] – Specificeert het maximum aantal items dat moet worden geretourneerd. De waarde moet een geheel getal zijn. Als de pageSize niet is opgegeven, retourneert het systeem alle overeenkomsten.

  • searchCriteria[currentPage] – Geeft de huidige pagina terug.

Voorbeeld voor zoekcriteria om de sorteervolgorde te bepalen en attributen die moeten worden geretourneerd

Dit voorbeeld laat zien hoe u zoekcriteria gebruikt om de sorteervolgorde en kenmerken te bepalen die moeten worden geretourneerd. Het retourneert bestellingen met status pending.

Eindpunt:

GET <host>/rest/<store_code>/V1/orders/

Kopteksten:

Content-Type application/json

Authorization Bearer <administrator token>

Parameters:

Parameter Waarde Beschrijving
zoekcriteria[filter_groups][0][filters][0][field] toestand Kenmerknaam om te filteren
zoekcriteria[filter_groups][0][filters][0][value] in afwachting Waarde toekennen aan filter
velden artikelen[increment_id,entity_id] Attributen om terug te keren in de reactie. Als u deze parameter niet opgeeft, worden alle kenmerken geretourneerd.

Laadvermogen:

Niet toepasbaar

Verzoek:

1
2
3
4
5
GET <host>/rest/V1/orders?
searchCriteria[filter_groups][0][filters][0][field]=status&
searchCriteria[filter_groups][0][filters][0][value]=pending&
searchCriteria[sortOrders][0][field]=increment_id&
fields=items[increment_id,entity_id]

Antwoord:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
    "items": [
        {
            "entity_id": 3003,
            "increment_id": "WA0003003"
        },
        {
            "entity_id": 3140,
            "increment_id": "WA0003140"
        },
        {
            "entity_id": 9435,
            "increment_id": "WA0009435"
        }
    ]
}

badges

Let’s connect

We hebben altijd zin in nieuwe en uitdagende projecten. We gaan graag met je in gesprek!