# Dynamische Antwort der REST API?

**URL:** <https://forum.shopware.com/t/dynamische-antwort-der-rest-api/38395>\
**Category:** Programmierung\
**Created:** [20. Juli 2016 um 12:55 UTC](https://forum.shopware.com/t/dynamische-antwort-der-rest-api/38395 "2016-07-20T12:55:37Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![MarcelEpp](https://avatars.discourse-cdn.com/v4/letter/m/a587f6/32.png) [@MarcelEpp](https://forum.shopware.com/u/MarcelEpp)\
**Post date:** [20. Juli 2016 um 12:55 UTC](https://forum.shopware.com/t/dynamische-antwort-der-rest-api/38395/1 "2016-07-20T12:55:37Z")

</div>

Hallo,

ich habe das Beispiel für die REST API aus der Dokumentation benutzt. Momentan mache ich es so, das ich über einen Upload Button eine CSV-Datei hochlade und diese dann mit PHP durchlaufen lasse. Dann schicke das ganze weg. Wie kann man das dynamischer gestalten. So nach dem Motto eins weg geschickt, danach gleich Ausgabe ob Erfolg oder Fehler.

Geht das nur mit Javascript? Und wenn ja, gibt es dafür irgendwo Beispiele?

---

<div class="post-metadata">

**Author:** ![NextMike](https://avatars.discourse-cdn.com/v4/letter/n/838e76/32.png) [@NextMike](https://forum.shopware.com/u/NextMike)\
**Post date:** [20. Juli 2016 um 12:58 UTC](https://forum.shopware.com/t/dynamische-antwort-der-rest-api/38395/2 "2016-07-20T12:58:35Z")

</div>

Kannst du noch mal genauer beschreiben was du tust? Man kann die API Aufrufe in einer Schleife in PHP laufen lassen. Als eine&nbsp;Datenquelle (Artikeldaten) würde sich eine Datenbank anbieten. Eine CSV würde jedoch auch gehen.&nbsp;

---

<div class="post-metadata">

**Author:** ![MarcelEpp](https://avatars.discourse-cdn.com/v4/letter/m/a587f6/32.png) [@MarcelEpp](https://forum.shopware.com/u/MarcelEpp)\
**Post date:** [20. Juli 2016 um 13:02 UTC](https://forum.shopware.com/t/dynamische-antwort-der-rest-api/38395/3 "2016-07-20T13:02:40Z")

</div>

Aber klar gerne. Hier mein “Code” . So aktualisiere ich Preise.

```
    Ungültige Dateiendung. Nur CSV-Dateien sind erlaubt");
      }
       
      //Überprüfung der Dateigröße
      $max_size = 250000*1024; //250000 KB
      if($_FILES['csv_upload']['size'] > $max_size) {
        die("Bitte keine Dateien größer 250MB hochladen");
      }
       
      //Pfad zum Upload
      $new_path = $upload_folder.$filename.'.'.$extension;
       
      //Neuer Dateiname falls die Datei bereits existiert
      if(file_exists($new_path)) { //Falls Datei existiert, hänge eine Zahl an den Dateinamen
        $id = 1;
        do {
          $new_path = $upload_folder.$filename.'_'.$id.'.'.$extension;
          $id++;
        } while(file_exists($new_path));
      }
       
      //Alles okay, verschiebe Datei an neuen Pfad
      move_uploaded_file($_FILES['csv_upload']['tmp_name'], $new_path);
      //echo 'Datei erfolgreich hochgeladen: '.$new_path.'';
      echo 'Datei verarbeitet: '.$new_path.'';

      // Upload beendet

      // Upload öffnen und Informationen entnehmen:
      $fp = fopen($new_path, "r");
      echo "";
      $counter = 1;
      while ( ($dataRow = fgetcsv($fp, 0, ";")) !== FALSE ) {
        if(is_numeric($dataRow[1])){
           // Update des Preises
            $updateArticle = array(
                    'mainDetail' => array(
                    'prices' => array(
                      array(
                          'customerGroupKey' => 'EK',
                          'price' => floatval($dataRow[1])
                      )
                    )
                  )
                );
          // Senden der Update Preise
          $client->put('articles/'. $dataRow[0] .'?useNumberAsId=true', $updateArticle);
        }
        else{
          echo "Zeile $counter wird ignoriert, da die zweite Spalte keine Zahl ist.";
        }
        $counter++;
      }
      // hochgeladene Daten löschen
      unlink($new_path);
      }
    ?>

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![NextMike](https://avatars.discourse-cdn.com/v4/letter/n/838e76/32.png) [@NextMike](https://forum.shopware.com/u/NextMike)\
**Post date:** [20. Juli 2016 um 13:05 UTC](https://forum.shopware.com/t/dynamische-antwort-der-rest-api/38395/4 "2016-07-20T13:05:38Z")

</div>

Ganz schön smart. Du kannst aber genauso alle anderen Felder aktualisieren. Oder übersehe ich etwas?

---

<div class="post-metadata">

**Author:** ![MarcelEpp](https://avatars.discourse-cdn.com/v4/letter/m/a587f6/32.png) [@MarcelEpp](https://forum.shopware.com/u/MarcelEpp)\
**Post date:** [20. Juli 2016 um 13:10 UTC](https://forum.shopware.com/t/dynamische-antwort-der-rest-api/38395/5 "2016-07-20T13:10:17Z")

</div>

Ja das selbe Beipiel funktioniert auch mit Artikel Erstellung. Wünschenswert wäre hier das nach jeder Artikeländerung eine Rückmeldung im Browser erfolgt.  
Und dafür brauch ich dann wohl Javascript?! ![Undecided](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/undecided.png "Undecided")

---

<div class="post-metadata">

**Author:** ![NextMike](https://avatars.discourse-cdn.com/v4/letter/n/838e76/32.png) [@NextMike](https://forum.shopware.com/u/NextMike)\
**Post date:** [20. Juli 2016 um 13:11 UTC](https://forum.shopware.com/t/dynamische-antwort-der-rest-api/38395/6 "2016-07-20T13:11:22Z")

</div>

Kannst du in PHP keine Meldungen nach jedem API-Call ausgeben?!

---

<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:** [20. Juli 2016 um 13:15 UTC](https://forum.shopware.com/t/dynamische-antwort-der-rest-api/38395/7 "2016-07-20T13:15:51Z")

</div>

Der Client gibt ja eine Response zurück bei jedem put.

Gib die doch einfach aus, breake deine while-Schleife, und generiere einen “next”-Button der dann mit der nächsten Zeile weiter macht.

Weiß nicht ob eine CSV dafür das beste mittel ist. Ich glaube ich würde den Inhalt der CSV vorher irgendwo zwischenspeichern. Eine DB oder ein Array in der Session oder sowas.

Damit man nicht jede Zeile einzeln bestätigen muss könntest du zusätzlich noch vorher abfragen ob der API-Aufruf erfolgreich war und nur bei Fehlern eine Bestätigung fordern.

---

<div class="post-metadata">

**Author:** ![NextMike](https://avatars.discourse-cdn.com/v4/letter/n/838e76/32.png) [@NextMike](https://forum.shopware.com/u/NextMike)\
**Post date:** [20. Juli 2016 um 13:18 UTC](https://forum.shopware.com/t/dynamische-antwort-der-rest-api/38395/8 "2016-07-20T13:18:00Z")

</div>

…ja genau…und gleichzeitig die gängigen Rückmeldungen übersetzen 😉 es hört sich nach einem guten Plan an 🙂

---

<div class="post-metadata">

**Author:** ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)\
**Post date:** [28. Juli 2016 um 07:37 UTC](https://forum.shopware.com/t/dynamische-antwort-der-rest-api/38395/9 "2016-07-28T07:37:46Z")

</div>

Wieso nicht ein eigenes Backend-Plugin für den CSV Import schreiben?  
Oder das bestehende Import-Modul mit einem eigenen Satzaufbau verwenden? …

Schöne Grüße,  
Niklas
