CDN Product Images: Shop API
Shop-API/Headless-Verhalten des Sylius-Plugins CDN Product Images: kontextgenaues Resizing auch im API-Platform-Kanal.
CDN Product Images: Shop API
Diese Dokumentation bezieht sich immer auf die aktuellste veroeffentlichte Version.
Live Demo: Teste dieses und weitere Plugins live — ohne Installation, ohne Risiko: demo.markus-michalski.net
Dual-Mode
Dieses Plugin ist dual-mode: CDN-Bild-URLs werden identisch auf dem Twig-Storefront/Admin und im headless Shop-API-Kanal (API Platform) frisch kontextgenau signiert - kein eigener Endpunkt, sondern eine Dekoration des bestehenden Bild-Normalizers.
graph LR
A["Storefront/Admin Twig imagine_filter"] --> C["ImgproxyUrlSigner"]
B["Shop API Bildauslieferung"] --> C
C --> D["Admin-Einstellungen CDN Integration"]
D --> E["mm-media-cdn Signing Service"]
E --> F["Twig Render"]
E --> G["JSON Response"]
Verhalten
- Das Plugin dekoriert
sylius_api.normalizer.image- und damit die Bild-Serialisierung jedes bestehenden Shop-API-Endpunkts, der ein Produkt- oder Taxon-Bild zurückgibt (z.B. Produkt- und Taxon-Detail-Endpunkte). Es gibt keinen zusätzlichen, eigenen Endpunkt. - Die Dekoration wird nur aktiv, wenn
SyliusApiBundleim Projekt registriert ist - ohne Shop-API-Kanal ändert sich am restlichen Verhalten nichts. - Der bereits von API Platform unterstützte Query-Parameter
?imageFilter=...entscheidet, für welche Sylius-Imagine-Filtergröße signiert wird - genau wie bei einem lokal hochgeladenen Bild.
Beispiel
curl "https://shop.example.com/api/v2/shop/products/mug-sw?imageFilter=sylius_shop_product_large_thumbnail"
Für ein CDN-Bild liefert das zurückgegebene Bild-Feld eine frisch signierte, auf sylius_shop_product_large_thumbnail zugeschnittene mm-media-cdn-URL statt der unveränderten eingetragenen URL.
Fehlerformat
Dieses Plugin führt kein eigenes Fehlerformat ein: Eine fehlgeschlagene Signierung (Netzwerkfehler, Timeout, Nicht-2xx) liefert nie einen API-Fehler, sondern degradiert auf die unveränderte, unsignierte eingetragene URL - ein funktionierendes (wenn auch nicht optimal zugeschnittenes) Bild schlägt immer einen Fehler.