Filter setzen bei api/order?

So zwischendurch schaue ich mir auch die API an. Aktuell versuche ich bei der Ausgabe der Bestellungen auch Filter zu setzen. Zum Test erst einmal „limit“ 1 ausprobiert. Funktioniert nicht. Könnte sein, dass ich ihn falsch setze. Hier mein Versuch:

    $filter = json_encode([
      'limit' => '1' 
      ]);

    $request = new Request( 
      'GET', 
      $this->APP_URL . '/api/order', 
      [ 'Authorization' => 'Bearer ' . $this->accessToken, 'Accept' => '*/*' ],
      $filter 
      );
    $response = $this->client->send($request);

Es werden einfach alle Bestellungen ausgegeben.

Bei Shopware 6 werden Parameter wie limit, filter usw. nicht im Body der Anfrage übergeben, sondern als Query-Parameter in der URL. Dein Code versucht, sie im Body zu übergeben, was für einen GET-Request unüblich ist.

Um limit korrekt zu setzen, füge den Parameter einfach zur URL hinzu. Hier ist, wie du es machen kannst:

$limit = 1;
$requestUrl = $this->APP_URL . '/api/order?limit=' . $limit;

$request = new Request( 
    'GET', 
    $requestUrl, 
    [ 'Authorization' => 'Bearer ' . $this->accessToken, 'Accept' => '*/*' ]
);
$response = $this->client->send($request);

Damit sollte nur eine Bestellung zurückgegeben werden.

Wenn du später mehrere Filter oder andere Parameter hinzufügen möchtest, kannst du dies in ähnlicher Weise tun, indem du die Parameter an die URL anhängst. Zum Beispiel:

$requestUrl = $this->APP_URL . '/api/order?limit=1&sort=name&filter[field]=value';

1 „Gefällt mir“

Alles klar, Danke für den Denkanstoß