API: Produkt mit Kategorie verknüpfen?

Hallo,

wie kann ich über die API (CURL+JSON) ein Produkt mit einer Kategorie verknüpfen.

Ich habe über die API ein Produkt erstellt und ich habe über die API eine Kategorie erstellt. Wie bringe ich beides jetzt zusammen?

Wenn ich in der Produkt-API das Feld categoryTree mit dem Array aus categoryIds fülle, erhalte ich einen Fehler, dass das Feld schreibgeschützt ist:

FRAMEWORK__WRITE_CONSTRAINT_VIOLATION
This field is write-protected.

In der Categorie-API sehe ich jetzt auch nichts, wo man eine Produktliste angeben könnte.

Über relationships > categoriesRo komme ich zwar zu einem related Link, der mir die von Hand im Backend eingefügten Verknüpfungen anzeigt. Aber ich weiß nicht, wie ich diese über die API erstellen kann :frowning: Und einen API-Typ relationships habe ich auch nicht gefunden in der swagger.html. 

Bin für jeden Tipp dankbar.

Durch kreuz und quer Durchstöbern des Forums bin ich auf einen Tipp gestoßen, der für mich Gold wert ist und der mir so nicht bewusst war. Vielleicht hilft es dem ein oder anderen ja auch weiter.

Wenn man wie ich z.B. nicht weiß, wie der API-Aufruf bei Zuordnung einer Kategorie zu einem Produkt sein muss, geht man einfach ins Backend und öffnet die Entwickler-Konsole des Browsers (F12). Dann führt man die gewünschte Aktion im Browser aus (z.B. verknüpfe Kategorie 123 mit Produkt & speichere). Dann schaut man in der Entwickler-Konsole unter Network (am Besten noch nach XHR filtern). Dort muss man etwas nach dem passenden API-Aufruf suchen. Den klickt man an und findet  dann den genauen API-Aufruf unter dem Tab „Headers“:


  1. General

Request URL:

http://develop.shopware6.de/api/v1/product/f63c6b26741d422d962f2

Request Method:

PATCH

Status Code:

  1. Response Headersview source

  1. Request Headersview source

  1. Request Payloadview parsed
  2. {„categories“:[{„id“:„77b959cf66de4c1590c7f9…“}]}

So kann man quasi jede Aktion, die man im Backend ausführt, über die API nachbilden.

Für mich war das jetzt grad ne Erleuchtung, aber vielleicht ist das ja allen anderen schon klar gewesen … ?!?

Also damit konnte ich jetzt jedenfalls mein Problem selbst lösen.

Viele Grüße

2 „Gefällt mir“

Die Shopware6 Administration nutzt konsequent auch unsere API für alle Funktionen, somit ist sichergestellt, dass auch alle Funktionen über die API verfügbar sind. Wenn man so will, ist die Administration auch nur ein Client, welcher die API nutzt.

Ja, das habe ich jetzt auch realisiert.

Aber das theoretisch, abstrakt zu erläutern “Die Shopware6 Administration nutzt konsequent auch unsere API für alle Funktionen, …” oder zu sagen “Hey Leute, ihr könnt über die Entwickler-Konsole im Browser alles recherchieren und über die API nachbilden. Dazu macht ihr Folgendes: …” sind wirklich zwei paar Stiefel.

Mir fehlen hier und auch in der Doku oft praktische Einstiege und Hilfen. Ihr seid manchmal sehr theoretisch und knapp in euren Antworten. Für euch ist das oft sicher ganz logisch und offensichtlich, ihr steckt ja auch bis Oberkante Unterkiefer drin. Aber wir “normale Entwickler”, die sich neu damit beschäftigen, brauchen da vielleicht den ein oder anderen praktischen Hinweis zusätzlich. Das vielleicht mal als kleinen Denkanstoß.

Aber vielleicht gehts ja auch nur mir so? :frowning:

@runi0011‍Dem kann ich mich zu 100% anschließen. Die Doku sollte stark ausgebaut werden.

same like me, bin hier am verweifeln mit Basis GET aufrufe ^^