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
, value
en 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 eenfilter_groups
. - Om een logische AND uit te voeren, specificeert u meerdere
filter_groups
. - U kunt geen logische OR uitvoeren over verschillende
filter_groups
zoals(A AND B) OR (X AND Y)
. OR’s kunnen alleen worden uitgevoerd in de context van een enkelefilter_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.
Eenvoudig zoeken
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.
Logische OF-zoekopdracht
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
.
Logisch EN zoeken
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.
Logisch EN en OF zoeken
Dit voorbeeld is vergelijkbaar met het logische EN-voorbeeld. Het zoekt de sku
s 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 opprice
eerst en dan doorname
telefoongespreksearchCriteria[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 sorterenprice
velden in aflopende volgorde en dename
velden in oplopende volgorde, belsearchCriteria[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 depageSize
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"
}
]
}