# REST API - Grundlegende Fragen

**URL:** https://forum.shopware.com/t/rest-api-grundlegende-fragen/28156
**Category:** Programmierung
**Created:** [16. Juni 2015 um 08:51 UTC](https://forum.shopware.com/t/rest-api-grundlegende-fragen/28156 "2015-06-16T08:51:35Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![webneo-mike](https://avatars.discourse-cdn.com/v4/letter/w/ac91a4/32.png) [@webneo-mike](https://forum.shopware.com/u/webneo-mike)
#### Post date: [16. Juni 2015 um 08:51 UTC](https://forum.shopware.com/t/rest-api-grundlegende-fragen/28156/1 "2015-06-16T08:51:35Z")

</div>

Hallo an alle Ich mache mir gerade Gedanken zur REST API und deren Wirkungsweise. Dafür habe ich ein erdachtes Szenario: Angenommen ich habe im Web einen Shopware-Shop mit tausenden Artikeln. Jetzt möchte ich von Zuhause aus per Script überprüfen, ob jeder Artikel z.B. im Freitextfeld 1 auch den Artikelnamen + ID drin stehen hat. Dafür käme ja die REST-API wie gerufen. Also würde ich jetzt alle Artikel auslesen und jeden auf dieses Freitextfeld überprüfen. Falls Name + ID drin stehen ist alles i.O., falls nicht muss dieser Wert hinterlegt werden. Der Einfachheit könnte man einfach alle Artikel durchlaufen und immer Namen + ID in das Freitextfeld schreiben (egal, ob da vorher schon was stand). Und als kleine Überprüfung, ob meine ganze Ausleserei auch funktioniert, soll es mir immer den Namen + ID im Browser ausgeben. Nicht mehr und nicht weniger. Zu Beginn würde ich erst einmal schauen, ob die API überhaupt greift und mir den Namen + ID jeweils anzeigen lassen: [code]\<?php include (“api.class.php”);

$client = new ApiClient(  
‘[http://www.meinShop.de/api](http://www.meinShop.de/api)’,  
‘mike’,  
‘yox6oyar4fyF9yInL2S123456789G5xJnBPuEIX9’  
);

$articles = $client-\>get(‘articles’); foreach($articles AS $article){ $articleID = $article[‘ID’]; $articleName = $article[‘name’]; print 'Name: ‘.$articleName.’ - ID: ‘.$articleID.’  
'; } ?\> [/code] Und genau das funktioniert schon nicht. Im Browser wird gefühlt der komplette Shop als Array angezeigt und für meine Variablen $articleID und $articleName bekomme ich Fehlermeldungen ala „Illegal string offset ‘id’“. Daher meine Fragen: [list] - Warum wird überhaupt so ein Array im Browser ausgegeben? Das möchte ich doch gar nicht. Es soll nur meine Testzeile oder ansonsten gar nichts ausgegeben werden. - Muss dies mit der Browseranzeige überhaupt so sein? Falls ja, wie will man denn die REST-API dann in fremde PHP-Scripte integrieren? Man will ja eigentlich mit den Variablen arbeiten und nicht mit der Browseransicht. - Warum wird mir beim Auslesen gleich ein Fehler angezeigt? Müsste meine Abfrage nach ID und Name anders aussehen? [/list] Vielleicht hatte ja jemand diese Probleme schon mal und konnte sie beheben. Über Rückmeldung würde ich mich sehr freuen 🕶

---

<div class="post-metadata">

### Author: ![t2oh4e](https://avatars.discourse-cdn.com/v4/letter/t/a5b964/32.png) [@t2oh4e](https://forum.shopware.com/u/t2oh4e)
#### Post date: [16. Juni 2015 um 09:52 UTC](https://forum.shopware.com/t/rest-api-grundlegende-fragen/28156/2 "2015-06-16T09:52:24Z")

</div>

Hi Mike, gehen wir mal deine drei Fragen am Ende durch: zu 1: Ist das der Beispiel-Shopware-Client aus dem Wiki? Wenn ja, guck dir da mal die prepareResponse-Methode an. Da wird die Antwort vom Server direkt ausgegeben. Womit wir direkt bei 2 sind: Nein, das muss nicht so sein, dass ist nur ein Beispiel mit dem man schnell testen kann ob/wie die API funktioniert. Für den Produktiveinsatz musst du die Daten natürlich nicht ausgeben. 3: versuch mal id statt ID 😉

---

<div class="post-metadata">

### Author: ![webneo-mike](https://avatars.discourse-cdn.com/v4/letter/w/ac91a4/32.png) [@webneo-mike](https://forum.shopware.com/u/webneo-mike)
#### Post date: [16. Juni 2015 um 12:57 UTC](https://forum.shopware.com/t/rest-api-grundlegende-fragen/28156/3 "2015-06-16T12:57:09Z")

</div>

Hi Timo Vielen Dank für die schnelle Rückmeldung. Der Kode der API-Klasse war aus dem Wiki. Und ja, dort stehen einige echo-Befehle drin. Wenn man die auskommentiert funktioniert’s :thumbup: Die Kleinschreibung von „id“ macht natürlich Sinn, aber es ging trotzdem nicht. Es kam eine analoge Fehlermeldung. Mit folgender Schleife ging’s dann aber: ` foreach($articles AS $article){ if(is\_array($article)){ foreach($article AS $el){ $articleID = $el['id']; $articleName = $el['name']; print 'Name: '.$articleName.' - ID: '.$articleID.'  
'; } } } ` Also, funktioniert letztendlich doch alles irgendwie :happy:

---

<div class="post-metadata">

### Author: ![t2oh4e](https://avatars.discourse-cdn.com/v4/letter/t/a5b964/32.png) [@t2oh4e](https://forum.shopware.com/u/t2oh4e)
#### Post date: [16. Juni 2015 um 13:55 UTC](https://forum.shopware.com/t/rest-api-grundlegende-fragen/28156/4 "2015-06-16T13:55:23Z")

</div>

Stimmt der direkte zugriff auf $article[‚id‘] kann gar nicht funktionieren… Du bekommst nämlich nicht nur die Artikeldaten zurück, sondern auch noch eine Statusmeldung. Die eigentlichen Daten stehen in deinem fall in $articles[‚data‘]. Korrekter wäre es eigentlich die Rückgabe vom $client-\>get(); in eine Variable zu speichern (z.B. $response), diese dann zu prüfen und danach erst über $response[‚data‘] auf die eigentlichen Artikeldaten zuzugreifen.
