AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Shopware API Zugriff REST

Ein Thema von fabi17 · begonnen am 21. Nov 2017 · letzter Beitrag vom 30. Nov 2017
Antwort Antwort
fabi17

Registriert seit: 1. Mai 2017
44 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Shopware API Zugriff REST

  Alt 21. Nov 2017, 18:12
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
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
141 Beiträge
 
Delphi 12 Athens
 
#2

AW: Shopware API Zugriff REST

  Alt 22. Nov 2017, 13:07
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. http://www.delphipraxis.net/189866-m...zugreifen.html und http://www.delphipraxis.net/171695-z...it-idhttp.html) Gubbe hatte das Digest-Problem zwar gelöst, aber da stand meine Schnittstelle mit IdHTTP schon weitestgehend.

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 (https://developers.shopware.com/deve...mples/article/) recht gut beschrieben.
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
  Mit Zitat antworten Zitat
Benutzerbild von Ritsch
Ritsch

Registriert seit: 15. Apr 2014
Ort: Wolfenbüttel
33 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Shopware API Zugriff REST

  Alt 22. Nov 2017, 14:38
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?
Richard
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
141 Beiträge
 
Delphi 12 Athens
 
#4

AW: Shopware API Zugriff REST

  Alt 22. Nov 2017, 15:37
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.
  Mit Zitat antworten Zitat
fabi17

Registriert seit: 1. Mai 2017
44 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Shopware API Zugriff REST

  Alt 22. Nov 2017, 19:01
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!
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
141 Beiträge
 
Delphi 12 Athens
 
#6

AW: Shopware API Zugriff REST

  Alt 23. Nov 2017, 12:41
Die Sicherheitsmechanismen von Shopware runter zu schrauben wird im allgemeinen (dringend) abgeraten.
Mit der wirklich kleinen Änderung von Gubbe (http://www.delphipraxis.net/1361368-post13.html) musst Du nichts am Shopsystem ändern und musst dich auch nicht an solche Änderungen erinnern, wenn Du mal den Shop neu aufsetzen solltest.

Also die kleine Einführung (inkl. Digest):

Vorarbeiten :
  • Lege je ein RestClient, RestRequest und RestResponse auf eine Form oder DataModule und verknüpfe RestRequest mit den anderen beiden. Den RestResponseDatasetAdapter vergessen wir an dieser Stelle erst einmal.
  • Setze RestClient.BaseURL auf 'http://<Username>:<Key>@<Shopware-Adresse>/api'.
  • Setze (per Code) RestRequest.URLAlreadyEncoded auf True
Get (Artikelliste):
Delphi-Quellcode:
RESTRequest.Method := rmGet;
RESTRequest.Resource := 'articles';
RESTRequest.Execute;
Ergebnis steht in RESTResponse.Content

Get (Einzelner Artikel idF. mit ID:3):
Delphi-Quellcode:
RESTRequest.Method := rmGet;
RESTRequest.Resource := 'articles/3';
RESTRequest.Execute;
Ergebnis steht in RESTResponse.Content

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 RestRequest.Method=rmPost .


Siehe auch http://docwiki.embarcadero.com/RADSt...ientbibliothek
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:38 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