Artikel Suchen über Rest API?

Hallo,

Gibt es eine Möglichkeit bestimmte Artikel nach bestimmten Kritieren zu suchen über die REST-API Schnitttstelle, ohne alle Artikel zu holen und manuell zu Filtern?

 

Nein, Du kannst nur eine eigene API implementieren, die eine Suche auf die Artikel ausführt. Oder - wenn Du sowieso einen internen Request machen möchtest - kannst Du das auch über Models und Resourcen lösen. Eine fertige REST-API Suchfunktion gibt es nicht.

Doch, man kann filtern.

Bei der Orders-API ist es dokumentiert, siehe REST API - Examples using the order resource

Funktioniert aber auch für Artikel - wir nutzen es z.B., um Artikel ohne Hersteller zu suchen:

        $params = [
            'filter' => [
                [
                    'property' => 'supplierId',
                ]
            ]
        ];
        $json = $this->apiClient->get('articles', $params);

 

3 Likes

Das Beispiel ist aber keine Suche so wie ich die Anforderung verstehen würde. Wenn ich Dein Beispiel nehme ist ein GET auf /1 auch eine „Suche“ nach dem Produkt mit ID 1.

Mein Verständnis der Frage war, dass er eine Volltextsuche über die API durchführen möchte. Und dafür ist mir keine Möglichkeit bekannt.

Naja aber effektives Filtern ist damit schon möglich. Neben property kann man ja auch expression und value mit angeben und so sehr effektiv die Daten selektieren.

Du kannst es auch etwas umgehen. Du kannst bspw. den Service von Algolia nutzen und hier direkt eine Live Suche / instantsearch.js implementieren.

Für Shopware hatte ich hier mal ein Test Plugin geschrieben, welches die Artikel entsprechend über die Shopware Console nach Algolia importiert. Hat hervorragend funktioniert. Und mit Algolia bekommst du Suchergebnisse in 1 bis 2 ms. Ganz egal ob es nun 100, 1000 oder 10.000 Artikel sind.

Abhängig natürlich davon, wovon du die Suche der Artikel überhaupt benötigst.

Hier mal zwei Bildchen der Suche mit Shopware, welche ich damals angefangen habe:

@Synonymous schrieb:

Das Beispiel ist aber keine Suche so wie ich die Anforderung verstehen würde. Wenn ich Dein Beispiel nehme ist ein GET auf /1 auch eine “Suche” nach dem Produkt mit ID 1.

Mein Verständnis der Frage war, dass er eine Volltextsuche über die API durchführen möchte. Und dafür ist mir keine Möglichkeit bekannt.

Das von mir angegebene Beispiel war sicherlich sehr minimalistisch (und sollte bloß zeigen, dass die Filter-Funktionalität auch bei Artikeln und nicht nur - wie in der verlinkten Dokumentation - bei Bestellungen funktioniert).

Man kann über die API im Standard einzelne Felder nach gewünschten Werten filtern, dabei auch Operatoren nutzen.

Man kann keine Volltextsuche durchführen und auch nicht die Eingabe ins Suchfeld des Shop-Frontends simulieren.

 

 

@hec schrieb:

Doch, man kann filtern.

Bei der Orders-API ist es dokumentiert, siehe https://developers.shopware.com/developers-guide/rest-api/examples/order/#further-examples

Funktioniert aber auch für Artikel - wir nutzen es z.B., um Artikel ohne Hersteller zu suchen:

$params = [
‚filter‘ => [
[
‚property‘ => ‚supplierId‘,
]
]
];
$json = $this->apiClient->get(‚articles‘, $params);

 

Genau sowas meinte/brauch ich vielen dank