Как мы получаем URL для миниатюрного изображения продукта через API остальных?
/V1/products/{sku}/media
даст нам относительный URL, такой как "/m/b/mb01-blue-0.jpg"
и URL-адрес изображения будет baseurl/catalog/product/m/b/mb01-blue-0.jpg
Это отлично работает. Но как мы получаем эскиз, который обычно находится в папке кеша.
magento2
product-images
rest
thumbnail
Мохаммед Шамим
источник
источник
Ответы:
Если вам нужен полный путь к уменьшенному изображению с помощью системы кэширования Magento 2 через API, вы можете создать свой собственный API на основе собственного класса ProductRepository.
Создать новый модуль. (объяснено в других постах)
Создайте файл etc / webapi.xml :
Создайте файл etc / di.xml :
Создайте свой интерфейс Api \ ProductRepositoryInterface.php :
Создайте свою модель Model \ ProductRepository.php :
Доступ
Перейти к
/rest/V1/custom/products/{sku}
Вы должны получить уменьшенное изображение с URL-адресом внешнего интерфейса изображения:
Комментарии :
Третий параметр функции startEnvironmentEmulation используется для принудительного использования области внешнего интерфейса, если вы уже находитесь в том же storeId. (полезно для области API)
Я не тестирую этот пользовательский API, вы можете адаптировать код, но логика верна, но я уже протестировал эту часть для получения URL-адреса изображения в другом пользовательском API.
Этот обходной путь позволяет избежать появления таких ошибок:
источник
\Magento\Catalog\Api\ProductRepositoryInterfaceFactory
вместо\Magento\Catalog\Model\ProductFactory
, так как вы можете вызватьget()
наproductRepositry
объект с SKU непосредственно. По крайней мере, это то, что я сейчас использую.vendor/magento/module-catalog/Model/ProductRepository.php:258
Причины, по которым Magento не предоставляет эту функциональность из коробки, следующие:
Как долгосрочное решение - API запросов должны решить этот вопрос, поскольку они предоставят возможность только для чтения и вычисляемых полей. В качестве решения мы могли бы предоставить сообщество в ближайшее время - мы могли бы внедрить / внедрить выделенную службу распознавания URL, которая будет возвращать URL для определенных типов объектов (таких как Product, Category, Image и т. Д.)
По той же причине мы не предоставляем URL продукта как часть ProductInterface
Вот мой ответ, посвященный этой проблеме (URL продукта): https://community.magento.com/t5/Programming-Questions/Retrieving-the-product-URL-for-the-current-store-from-a/mp / 55387 / выделить / правда # M1400
источник
Это должно быть возможно с помощью следующего URL:
/rest/V1/products/{sku}
Это вернет продукт, и должен быть узел для custom_attributes, который содержит ссылку на миниатюру
источник