Einfügen von Artikeln funktioniert nicht - HILFE !!!

Hallo,

wenn ich versuche, den „offiziellen Demoartikel“ (von der Shopware REST-API Website) in meinen Shop hinzuzufügen, bekomme ich anstelle eines „Success: true“ bzw eines „Success: False“ die Liste aller Artikel im Shop zurück. (in einem Shop ca 2800 Artikel, in einem weiteren ca 50.000 Artikel)

Wenn ich das auf einem Testshop ausführe, dann funktioniert der Befehl aber.

Hier kommt der Datensatz, den ich (von der Shopware 5 Doku kopiert) abschicke.

{ „name“: „Sport Shoes“, „active“: true, „tax“: 19, „supplier“: „Sport Shoes Inc.“, „categories“: [{ „id“: 15 }], „mainDetail“: { „number“: „turn“, „active“: true, „prices“: [{ „customerGroupKey“: „EK“, „price“: 999 }] } }

 

Hinweis: Ich mache das nicht aus PHP o.ä. heraus, sondern aus einer Windows Applikation, die in Delphi geschrieben ist. Da es mit meinem Testshop funktioniert, kann es also nicht daran liegen, dass ich da etwas falsch programmierthäte - nehme ich zumindest mal stark an.

Kann mir bitte jemand einen Tipp geben, was ich da jetzt machen kann ? 

Vielen Dank für Eure Hilfe !

Tom_Tom

 

Hi @Tom_Tom‍,

hast du mal in die Logfiles deines Shops geschaut?
Klingt für mich so, als würde am Ende bei der Shop-API ein GET-Request auf /api/articles ankommen.

Wenn du zur weiteren Analyse mal einen Ausschnitt deines Client-Requests und/oder den passenden Eintrag aus dem Logfile hättest, würde das schon mal weiterhelfen.

Ansonsten mal über einen neutralen Client, wie z.B. Postman, versuchen, dann lässt sich der Client als Fehlerquelle ggf. schon mal ausschließen.

VG
Endeehjeeh

1 „Gefällt mir“

Hi @Endeehjeeh

danke für Deine Rückmeldung, ich versuche, schnellstmöglich an die Logfiles zu kommen. (Ist ein Kundenshop, aber das sollte kein Problem sein.)

Das mit dem „GET“ am Ende hatte ich auch schon gedacht, aber dann sollte der Artikel ja dennoch eingefügt sein. Ist er aber nicht, habe ich direkt auf der MySQL DB geprüft.

Ich seh mir auch mal „Postman“ an,kenne das Tool zugegebenermaßen nicht.  (In Delphigibt es einen „REST-Debugger“, der hat mir bisher immer sehr gute Dienste geleistet, der schmeißt auch immer alles sehr präzise raus.)

Sobald ich die Logs habe, poste ich hier den Ausschnitt.

Vorab schon mal DANKE !!!

VG

Tom_Tom

Ähm, GET beim Auslesen, POST beim Einfügen, PUT beim Updaten … nicht da es da Verwechslungen gibt.

Hab ich schon richtig verstanden.  :-) 

Ich send ein POST, bekomme aber eine Antwort wie nach einem GET. 

Dann ist dein POST nicht korrekt oder wird innerhalb deiner Anwendung verändert.

Dachte ich zunächst auch, aber bei einem anderen Shop funktioniert es einwandfrei.

Ich kann mir das hier nur so erklären. POST gibt nie eine Liste der Artikel zurück. Da gibt es max. eine Fehlermeldung. Es sei denn die REST API vom Shop ist verändert. Ich würde prüfen, ob auch wirklich ein POST gesendet wird. Zusätzlich könnte man Postman mit zur Hilfe benutzen oder auf die schnelle ein einfaches PHP-Script schreiben um eine mögliche Fehlerquelle beim Shop ausschließen zu können.

Ich habe es gerade mit Postman ausprobiert und erhalte das gleiche Ergebnis zurück. Hier ein Screenshot.

(Authorization ist “Basic Authentication” mit Username und API Key - aber das funktioniert ja auch bei allen GET und PUT Befehlen, also ist das wohl korrekt)

Das Ergebnis sind 106000 Zeile “schönstes JSON” mit allen Artikeldaten. 

So etwas habe ich noch nicht gehört!

Hat da jemand an der REST API rumgefummelt? Ein zusätzliches Plugin im Einsatz? Shop aktuelle Version? Oder Problem beim Server? Scheint so, als würde POST zu GET switchen. Ich würde jetzt prüfen ob das POST auf der jeweiligen Domain vom Server umgewandelt wird, oder innerhalb von Shopware. Damit könnte man die Fehlersuche etwas eingrenzen.

Der Shop wurde kürzlich erst geupdatet. (Witzig: es handelt sich um 2 Shops, die den gleichen Mist machen)

Da sind bestimmt ne Menge PlugIns im Einsatz, Paypay, Klarna usw.

Leider kenn ich mich auf dem Shop nicht so wirklich gut aus. Deshalb weiss ich nicht, ob die nächste Frage total sinnbefreit ist, aber gibt es eine Art zentrale Stelle, an der eine REST API “Erweiterung” hinterlegt sein müsste ? Dann müsste man das ja an der Stelle erkennen können, oder ?

DANKE !!!

Leider kenn ich mich auf dem Shop nicht so wirklich gut aus

Das sind jetzt schlechte Voraussetzungen bei der Fehlersuche :slight_smile:

Aber wenn es 2 Shops sind, ist es vielleicht ein Server-Problem. Liegen die beiden Shop auf selben Server?

Die API selber liegt hier:

https://github.com/shopware/shopware/tree/5.7/engine/Shopware/Controllers/Api

https://github.com/shopware/shopware/tree/5.7/engine/Shopware/Components/Api/Resource

aber wenn es 2 Shops sind, ist das schon sehr komisch.

Zusätzlich kannst du unter Einstellungen -> Systeminfo -> Shopware Dateien prüfen ob irgendwo Veränderungen vorliegen. Um dem Kreis der Fehlersuche weiter einzugrenzen.

Die liegen auf getrennten Servern.

Ich stimme Dir zu, das sind echt schlechte Voraussetzungen. (Da ist eigentlich gar nicht mein Thema) 

Objektiv betrachtet sind das zwei Webshops, auf denen mehrere Personen über die Jahre hinweg fleissigst alles Mögliche veranstaltet haben.

Beste Voraussetzungen für genau solche Themen, wie wir es gerade hier diskutieren.

Als Lieferant einer passenden Warenwirtschaft will ich es meinen Kunden eigentlich nur erleichtern, aus meinem System heraus direkt neue Produkte zu erstellen usw. 

Blöderweise zicken diese Shops jetzt herum. Die Rest API habe ich eigentlich gut im Griff, aber die technischen Details von Shopware sind natürlich nicht meine Welt…

Schließlich gibt es auch noch andere Shops, die wir anbinden. Da ist dann irgendwo eine Grenze, bis zu der man in die Systeme eintaucht.

Ich fürchte, das läuft auf irgendeine “Gurkenlösung” heraus, mit der dann die neuen Produkte angelegt werden müssen. 

 

Ach ja, ein „Blockieren“ von POST Befehlen istes auch nicht, da ich z.B. ohne Probleme neue Kategorien anlegen kann.

Ohje …

also ich würde in diesem Falle folgendes überprüfen oder von einem anderen überprüfen lassen:

  1. Sind die Shopversion auf halbwegs aktuellen Stand?
  2. Sie die Shop-Dateien gerade im Bezug zur API noch alle original, also unverändert? (siehe Anzeige im Backend)
  3. Gibt es Plugin, die möglichweise Einfluss auf die API machen?
  4. Den POST-Prozess auf dem Server kontrollieren (Test PHP-Datei anlegen etc.)

 

1 „Gefällt mir“

Das werde ich mal machen / veranlassen.

Zumindest die ersten drei Positionen sollte ich hinbekommen,

  1. Die Shopversionen sind 5.6.8, das sollte passen, das sehe ich gerade im Backend.

Bei Nr 4 wirds wohl sehr schwierig. PHP ist nun absolut nicht meine Welt, leider.

Erstmal VIELEN DANK an Deine Mühe !

Ich werde das Ergebnis hier auf jeden Fall nochmal posten.

Nochmals DANKE für Deine Hilfe !

Tom_Tom

Zu Punkt 4 geht ganz einfach:

Einfach im Hauptverzeichnis von einem betreffenden Shop eine test.php (oder anderen Name) anlegen. Der Inhalt sind dann wie folgt aus:

Und dann mittels Postman, einfach sinnlose Daten mittels POST an diese test.php übertragen. Dann sollte das wie folgt aussehen:

Und wenn das alles gut aussieht, dann ist das Problem wirklich beim Shop zu suchen.

 

1 „Gefällt mir“

Ah, okay, jetzt hab ich kapiert, was Du meinst. Stimmt, das ist eine einfach Art und Weise, das zu testen…

Das probier ich noch aus.

In der Zwischenzeit habe ich das bei dem Kunden auf seinem Testserver getestet und es läuft da. 

Also muss es an den beiden Shops liegen… 

Wird meinem Kunden sicher nicht gefallen… Mist.

 

Ja, somit scheint das Problem dann wohl innerhalb vom Shop zu liegen. Gilt jetzt natürlich zu suchen an welcher Stelle :slight_smile: Um nicht in der Liveumgebung zu suchen, ist es ratsam eine Testumgebung aufzubauen, quasi eine 1:1 Kopie vom Livesystem. Und dort dann testen, alle fremdem Plugins deaktivieren und testen, testen, testen.

1 „Gefällt mir“