Comment obtenir l'URL de l'image miniature d'un produit via l'API rest.
/V1/products/{sku}/media
nous obtiendrait l'URL relative telle que "/m/b/mb01-blue-0.jpg"
et l'url de l'image serait baseurl/catalog/product/m/b/mb01-blue-0.jpg
Cela fonctionne bien. Mais comment obtenir la vignette qui réside généralement dans le dossier cache.
magento2
product-images
rest
thumbnail
Mohammed Shameem
la source
la source
Réponses:
Si vous avez besoin du chemin complet de l'image miniature avec le système de cache Magento 2 via l'API, vous pouvez créer votre API personnalisée basée sur la classe native ProductRepository.
Créez un nouveau module. (expliqué dans d'autres articles)
Créez un fichier etc / webapi.xml :
Créez un fichier etc / di.xml :
Créez votre interface Api \ ProductRepositoryInterface.php :
Créez votre modèle Model \ ProductRepository.php :
Accès
Aller à
/rest/V1/custom/products/{sku}
Vous devez récupérer l'image miniature avec l'URL du frontend de l'image mise en cache:
Commentaires :
Le troisième paramètre de la fonction startEnvironmentEmulation est utilisé pour forcer l'utilisation de la zone frontend si vous êtes déjà sur le même storeId. (utile pour la zone API)
Je ne teste pas cette API personnalisée, vous pouvez adapter le code mais la logique est correcte mais j'ai déjà testé la partie pour récupérer l'URL de l'image dans d'autres API personnalisées.
Cette solution de contournement vous évite d'avoir ce type d'erreurs:
la source
\Magento\Catalog\Api\ProductRepositoryInterfaceFactory
au lieu de\Magento\Catalog\Model\ProductFactory
, puisque vous pouvez appeler directementget()
l'productRepositry
objet avec le SKU. Du moins, c'est ce que j'utilise maintenant.vendor/magento/module-catalog/Model/ProductRepository.php:258
Les raisons pour lesquelles Magento ne fournit pas cette fonctionnalité prête à l'emploi sont les suivantes:
En tant que solution à long terme - les API de requête devraient répondre à cette question, car elles fourniront une capacité pour les champs en lecture seule et calculés. En tant que solution, nous pourrions fournir le temps le plus proche de la communauté - nous pourrions implémenter / introduire un service de résolution d'URL dédié qui retournera l'URL pour des types d'entités spécifiques (comme le produit, la catégorie, l'image, etc.)
Pour la même raison, nous ne fournissons pas l'URL du produit dans le cadre de ProductInterface
Voici ma réponse consacrée à ce problème (URL du produit): https://community.magento.com/t5/Programming-Questions/Retrieving-the-product-URL-for-the-current-store-from-a/mp / 55387 / surlignage / vrai # M1400
la source
Cela devrait être possible avec l'url suivante:
/rest/V1/products/{sku}
Cela retournera le produit et il devrait y avoir un nœud pour custom_attributes qui contient un lien miniature
la source