¿Cómo obtenemos la URL para obtener una imagen en miniatura de un producto a través de la API de descanso?
/V1/products/{sku}/media
nos daría la URL relativa como "/m/b/mb01-blue-0.jpg"
y la url de la imagen sería baseurl/catalog/product/m/b/mb01-blue-0.jpg
Esto funciona bien Pero, ¿cómo obtenemos la miniatura que generalmente reside en la carpeta de caché.
magento2
product-images
rest
thumbnail
Mohammed Shameem
fuente
fuente
Respuestas:
Si necesita la ruta completa de la imagen en miniatura con el sistema de caché Magento 2 a través de la API, puede crear su API personalizada basada en la clase de ProductRepository nativa.
Crea un nuevo módulo. (explicado en otras publicaciones)
Cree un archivo etc / webapi.xml :
Cree un archivo etc / di.xml :
Cree su interfaz Api \ ProductRepositoryInterface.php :
Cree su modelo Model \ ProductRepository.php :
Acceso
Ir
/rest/V1/custom/products/{sku}
Debería recuperar la imagen en miniatura con la URL de la interfaz de la imagen almacenada en caché:
Comentarios:
El tercer parámetro de la función startEnvironmentEmulation se usa para forzar el uso del área frontend si ya está en el mismo storeId. (útil para el área API)
No pruebo esta API personalizada, puede adaptar el código pero la lógica es correcta, pero ya probé la parte para recuperar la URL de la imagen en otra API personalizada.
Esta solución evita que tengas este tipo de errores:
fuente
\Magento\Catalog\Api\ProductRepositoryInterfaceFactory
lugar de\Magento\Catalog\Model\ProductFactory
, ya que puede invocarget()
elproductRepositry
objeto con el SKU directamente. Al menos, eso es lo que estoy usando ahora.vendor/magento/module-catalog/Model/ProductRepository.php:258
Las razones por las que Magento no proporciona esta funcionalidad de manera inmediata son las siguientes:
Como solución a largo plazo: las API de consulta deben abordar esta pregunta, ya que proporcionarán la capacidad de campos de solo lectura y calculados. Como solución podríamos proporcionar el tiempo más cercano a la comunidad, podríamos implementar / introducir un servicio dedicado de resolución de URL que devolverá la URL para tipos de entidad específicos (como Producto, Categoría, Imagen, etc.)
Por el mismo motivo, no proporcionamos la URL del producto como parte de ProductInterface
Aquí está mi respuesta dedicada a este problema (URL del producto): https://community.magento.com/t5/Programming-Questions/Retrieving-the-product-URL-for-the-current-store-from-a/mp / 55387 / resaltado / verdadero # M1400
fuente
Debería ser posible con la siguiente url:
/rest/V1/products/{sku}
Esto devolverá el producto y debería haber un nodo para atributos_personalizados que contiene un enlace en miniatura
fuente