![]() |
Shopware API Zugriff REST
Guten Abend,
ich würde gerne auf meinen Shopware Shop via API zugreifen um Artikeldaten zu aktualisieren. Ich habe mir die Shopware Doku angesehen, verstehe aber leider von dem ganzen Thema REST mehr oder weniger Bahnhof. In verschiedenen Tutorials habe ich die REST-Komponenten kennengelernt (Client, Adapter,...) und ich erhalte auf meiner VLC Anwendung nach Verbinden der verschiedenen Komponenten auch einen Response mit Daten in ein DBGrid. Leider finde ich im Netz aber leider kein Tutorial, was mir ab hier weiterhilft. Hat jemand ein Tutorial für mich oder kann mir irgendwie Hilfestellung geben? Vielen dank vorab Viele Grüße |
AW: Shopware API Zugriff REST
Hallo Fabi,
ich habe für die Entwicklung meiner Shopware-Schnittstelle auf die REST-Komponenten von Delphi verzichtet und mit IdHTTP gearbeitet, insbes. weil ich mit denen immer wieder mal Probleme im Bereich Authorizing (Digest) hatte. (s. ![]() ![]() Alle Informationen werden im JSON-Format übertragen. Kenntnisse darin zu haben würde also nicht schaden, insbes. da Du die Änderungen von Artikeln etc. auch als JSON übergeben müsstest. Wie die Informationen abgerufen und übertragen werden ist in der REST-API-Beschreibung von Shopware ( ![]() Schau Dir mal die Funktionen Get, Put, Post und Delete in tIdHTTP an. Diese Funktionen gibt es auch in den REST-Komponenten. Wobei genau hast Du denn noch Probleme? LLAP Guido |
AW: Shopware API Zugriff REST
Ich würde an deiner Stelle auch auf die Indy-Komponenten zurück greifen.
Zudem lernst du auf dem Wege vermutlich viel mehr, als mit einer fertigen Lösung. In welchem Format werden die Daten denn übertragen? |
AW: Shopware API Zugriff REST
Die Daten werden als JSON übertragen. Genauer Aufbau der Daten s. Link unter #2!
Ich hab's eben nochmal ausprobiert. Mit den von Gubbe vorgeschlagenen Änderungen kann man die Daten auch gut mit den REST-Komponenten übertragen. Mit tRESTResponseDataSetAdapter ist es dann auch möglich, die Listen (z.B. Artikelliste) sehr schön und einfach in eine Tabelle zu übertragen. Da Du aber Daten auch anlegen und/oder aktualisieren möchtest, wirst Du an der Erstellung entsprechender JSON-Objekte, die dann mit Put/Post übertragen werden, wohl nicht vorbeikommen. |
AW: Shopware API Zugriff REST
Grüß euch,
lieben Dank für eure Antworten. Das Digest Problem habe ich mit einer Änderung in der Shopware bootstrap umgangen, sodass nun eine Basic Auth möglich ist. Könntest du mir einen Schnipsel einer .Get / .Put Methode mit den Rest Komponenten mal hier reinschreiben? Ich habe die Daten mit dem Rest Debugger zwar in der Tabelle, aber hab gerade keine Ahnung wie ich von hier aus weiter machen soll. Im Netz lese ich verschiedenste Sachen mit Stringlists und Streams, es scheitert bei mir ehrlich gesagt schon daran die richtige Methode zu finden, um überhaupt etwas zu aktualisieren. Leider sind die meisten Tutorials im Netz nur dazu da, das Grid/Listview zu füllen..aber nicht, wie es von hier aus weitergeht. danke euch schon mal! |
AW: Shopware API Zugriff REST
Die Sicherheitsmechanismen von Shopware runter zu schrauben wird im allgemeinen (dringend) abgeraten.
Mit der wirklich kleinen Änderung von Gubbe ( ![]() Also die kleine Einführung (inkl. Digest): Vorarbeiten :
Delphi-Quellcode:
Ergebnis steht in RESTResponse.Content
RESTRequest.Method := rmGet;
RESTRequest.Resource := 'articles'; RESTRequest.Execute; Get (Einzelner Artikel idF. mit ID:3):
Delphi-Quellcode:
Ergebnis steht in RESTResponse.Content
RESTRequest.Method := rmGet;
RESTRequest.Resource := 'articles/3'; RESTRequest.Execute; Wie Du über die Artikelnummer statt der ID an einen Artikel kommst steht in der API-Beschreibung! In beiden Fällen bekommst Du einen String zurück, der eine JSON-Struktur enthält. Diesen kannst Du dann entsprechend zerlegen. Umgekehrt (z.B. Erstellen eines Artikels) baust Du zunächst einen solchen JSON-Datensatz entsprechend der Struktur in der API-Beschreibung auf und übergibst diesen als Parameter unter Verwendung der
Delphi-Quellcode:
.
RestRequest.Method=rmPost
Siehe auch ![]() |
AW: Shopware API Zugriff REST
Hi Guido,
danke für die Antwort. Zwischenzeitlich habe ich es zwar mit Indy hinbekommen, würde es aber auch gerne mit der Rest-Komponente schaffen. Der get Befehl ist kein Problem, leider komme ich aber nach wie vor bei put/post nicht weiter. Kannst du mir vielleicht ein konkretes Beispiel geben, wie an z.B. bei einem Shopware Artikel den Namen ändert? Den Json String aufbauen ist ja kein Problem, aber die Übergabe als Parameter bekomme ich nicht hin. Vielen Dank schon mal |
AW: Shopware API Zugriff REST
Wie gesagt - Ich hab's mit den Indys umgesetzt.
Allerdings habe ich mal ein kleines Test-Programm mit den REST-Komponenten erstellt, mit dem ich eine Base64-Encodierte-Datei (B64Str) samt des Dateinamens (FNStr) übertragen habe.
Delphi-Quellcode:
Das hat so wunderbar funktioniert.
{...}
RESTRequest.Method := tRESTRequestMethod.rmPost; RESTRequest.Params.Clear; RESTRequest.Params.AddItem('datei', FNStr, tRESTRequestParameterKind.pkGETorPOST); RESTRequest.AddParameter('bild',B64Str); RESTRequest.Execute; {...} Vlt. hilft Dir das weiter. |
AW: Shopware API Zugriff REST
Hi Guido,
danke, das hilft mir schon mal. Finde es über Indy aber fast einfacher. Den Indy get&Update habe ich soweit fertig, leider komme ich mit Post nicht zurecht. Mein TestString zum Anlegen eines Artikels ist {"name" :"Testartikel","description":"test","active":"true ","tax":"19","prices.price":"9,99","categories.id" :"38","supplier":"test"} Leider erhalte ich jedoch eine HTTP 400 Exception (Bad Request). Ich greife mit http.Post auf die richtige /articles Ressource zu. Ist oben in dem String ein Fehler oder fehlt ein Pflichtfeld? Schönen Abend Fabi |
AW: Shopware API Zugriff REST
Ohne die API zu kennen: versuch es mal so (die Umbrüche sind nicht notwendig und dienen nur der Lesbarkeit).
Code:
{
"name":"Testartikel", "description":"test", "active":true, "tax":19, "prices.price":9,99, "categories.id" :38, "supplier":"test" } |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz