Projekt

Allgemein

Profil

Aktionen

GX-Bug #67042

geschlossen

On some servers, retrieving orders via Billbee does not work if the URL already contains the parameter page and per_page.

Von Till Tepelmann vor fast 4 Jahren hinzugefügt. Vor fast 3 Jahren aktualisiert.

Status:
Erledigt
Priorität:
Dringend
Zugewiesen an:
Marvin Muxfeld
Kategorie:
REST-API
Zielversion:
% erledigt:

0%

Geschätzter Aufwand:
Steps to reproduce:
Betroffene Versionen:
4.1.1.0
Release Notes Langtext:

Bestellungen können über die REST-API wieder zuverlässig abgerufen werden


Beschreibung

Auf einigen Server funktioniert das Abfrufen von Bestellungen über Billbee nicht, wenn die URL bereits die Paramter page und per_page enthalten sind.

Wir senden folgenden Call an den Shop:

GET /api.php/v2/orders?page=1&per_page=50&fields=id%2CpurchaseDate HTTP/1.1

Übersetzt heißt das: Gib mir die ersten 50 Bestellungen und zwar nur die ID und das pruchaseDate.

In der Antwort schickt Gambio die ersten 50 Bestellungen (von 2011) und einen HTTP Header, in dem ein Link auf die letzte Seite steht, die die neuesten Bestellungen enthält.

Der Shop schickt den Header hier zurück:

Link: </api.php/v2/orders?page=1&per_page=50&fields=id%2CpurchaseDate?page=2&per_page=50&fields=id%2CpurchaseDate>; rel="next", <api.php/v2/orders?page=1&per_page=50&fields=id%2CpurchaseDate?page=222&per_page=50&fields=id%2CpurchaseDate>; rel="last"

wir suchen nach rel="last" und zerlegen den Part dann um nach der letzten Seite zu suchen:

</api.php/v2/orders?
page=1&per_page=50&fields=id%2CpurchaseDate?
page=222&per_page=50&fields=id%2CpurchaseDate>; rel="last"

Der Shop gibt hier zweimal mit page= antwortet. Die richtige Seite ist die 222, leider schreibt er davor auch noch page=1 in den Header.
Das führt in der aktuellen Billbee Version dazu, dass wir page = 1 erkennen und damit nur seite 1 auslesen, die aber nur alte Bestellungen von 2011 enthält.


On some servers, retrieving orders via Billbee does not work if the URL already contains the parameter page and per_page.

We send the following call to the shop:

GET /api.php/v2/orders?page=1&per_page=50&fields=id%2CpurchaseDate HTTP/1.1

Translated this means: Give me the first 50 orders and only the ID and the pruchaseDate.

In the answer Gambio sends the first 50 orders (from 2011) and a HTTP header with a link to the last page containing the latest orders.

The shop sends the header back here:

link: </api.php/v2/orders?page=1&per_page=50&fields=id%2CpurchaseDate?page=2&per_page=50&fields=id%2CpurchaseDate>; rel="next", <api. php/v2/orders?page=1&per_page=50&fields=id%2CpurchaseDate?page=222&per_page=50&fields=id%2CpurchaseDate>; rel="last".

we search for rel="last" and then split the part to search for the last page:

</api.php/v2/orders?
page=1&per_page=50&fields=id%2CpurchaseDate?
page=222&per_page=50&fields=id%2CpurchaseDate>; rel="last"

The shop answers here twice with page=. The correct page is 222, but unfortunately he also writes page=1 in the header before that.
In the current Billbee version, this leads to the fact that we recognize page = 1 and thus only read page 1, which however only contains old orders from 2011.


Aktionen

Auch abrufbar als: Atom PDF