Wie erhalten wir die URL zum Miniaturbild eines Produkts über die Rest-API?
/V1/products/{sku}/media
würde uns die relative url besorgen wie "/m/b/mb01-blue-0.jpg"
und die Bild-URL wäre baseurl/catalog/product/m/b/mb01-blue-0.jpg
Das funktioniert gut. Aber wie bekommen wir die Miniaturansicht, die sich normalerweise im Cache-Ordner befindet.
magento2
product-images
rest
thumbnail
Mohammed Shameem
quelle
quelle
Antworten:
Wenn Sie den vollständigen Pfad des Miniaturbilds mit dem Magento 2-Cache-System über die API benötigen, können Sie Ihre benutzerdefinierte API basierend auf der nativen ProductRepository-Klasse erstellen.
Erstellen Sie ein neues Modul. (erklärt in anderen Beiträgen)
Erstellen Sie eine etc / webapi.xml- Datei:
Erstellen Sie eine etc / di.xml- Datei:
Erstellen Sie Ihre Schnittstelle Api \ ProductRepositoryInterface.php :
Erstellen Sie Ihr Modell Model \ ProductRepository.php :
Zugriff
Gehe zu
/rest/V1/custom/products/{sku}
Sie sollten das Miniaturbild mit der zwischengespeicherten Bild-Frontend-URL abrufen:
Bemerkungen :
Der dritte Parameter der Funktion startEnvironmentEmulation wird verwendet, um die Verwendung des Frontend-Bereichs zu erzwingen, wenn Sie sich bereits in derselben storeId befinden. (nützlich für den API-Bereich)
Ich teste diese benutzerdefinierte API nicht. Sie können den Code anpassen, aber die Logik ist korrekt. Ich habe das Teil bereits getestet, um die Bild-URL in einer anderen benutzerdefinierten API abzurufen.
Diese Problemumgehung vermeidet, dass Sie diese Art von Fehlern haben:
quelle
\Magento\Catalog\Api\ProductRepositoryInterfaceFactory
statt\Magento\Catalog\Model\ProductFactory
, da Sie anrufen könnenget()
auf demproductRepositry
Objekt mit der Artikelnummer direkt. Zumindest benutze ich das jetzt.vendor/magento/module-catalog/Model/ProductRepository.php:258
Die Gründe, warum Magento diese Funktionalität nicht sofort bereitstellt, sind folgende:
Als langfristige Lösung: Abfrage-APIs sollten diese Frage beantworten, da sie schreibgeschützte und berechnete Felder ermöglichen. Als eine Lösung, die wir für die nächste Community-Zeit bereitstellen könnten, könnten wir einen dedizierten URL-Auflösungsdienst implementieren / einführen, der die URL für bestimmte Entitätstypen (wie Produkt, Kategorie, Bild usw.) zurückgibt.
Aus dem gleichen Grund geben wir die Produkt-URL nicht als Teil von ProductInterface an
Hier ist meine Antwort zu diesem Thema (Produkt-URL): https://community.magento.com/t5/Programming-Questions/Retrieving-the-product-URL-for-the-current-store-from-a/mp / 55387 / highlight / true # M1400
quelle
Es sollte mit der folgenden URL möglich sein:
/rest/V1/products/{sku}
Dies gibt das Produkt zurück und es sollte einen Knoten für custom_attributes geben, der einen Thumbnail-Link enthält
quelle