Como obtemos o URL para miniatura da imagem de um produto por meio da API de descanso.
/V1/products/{sku}/media
nos daria o URL relativo, como "/m/b/mb01-blue-0.jpg"
e o URL da imagem seria baseurl/catalog/product/m/b/mb01-blue-0.jpg
Isso funciona bem. Mas como obtemos a miniatura que geralmente reside na pasta de cache.
magento2
product-images
rest
thumbnail
Mohammed Shameem
fonte
fonte
Respostas:
Se você precisar do caminho completo da imagem em miniatura com o sistema de cache Magento 2 por meio da API, poderá criar sua API personalizada com base na classe ProductRepository nativa.
Crie um novo módulo. (explicado em outras postagens)
Crie um arquivo etc / webapi.xml :
Crie um arquivo etc / di.xml :
Crie sua interface Api \ ProductRepositoryInterface.php :
Crie o seu modelo Model \ ProductRepository.php :
Acesso
Vamos para
/rest/V1/custom/products/{sku}
Você deve recuperar a imagem em miniatura com o URL de front-end da imagem em cache:
Comentários :
O terceiro parâmetro da função startEnvironmentEmulation é usado para forçar o uso da área de front-end se você já estiver no mesmo storeId. (útil para a área da API)
Não testei essa API personalizada, você pode adaptar o código, mas a lógica está correta, mas já testei a parte para recuperar o URL da imagem em outra API personalizada.
Esta solução alternativa evita que você tenha esse tipo de erro:
fonte
\Magento\Catalog\Api\ProductRepositoryInterfaceFactory
invés de\Magento\Catalog\Model\ProductFactory
, já que você pode chamarget()
oproductRepositry
objeto diretamente com o SKU. Pelo menos, é o que estou usando agora.vendor/magento/module-catalog/Model/ProductRepository.php:258
Os motivos pelos quais o Magento não fornece essa funcionalidade imediatamente são os seguintes:
Como uma solução a longo prazo - as APIs de consulta devem abordar esta questão, pois fornecerão a capacidade de campos somente leitura e computados. Como uma solução que poderíamos oferecer ao tempo mais próximo da comunidade - poderíamos implementar / introduzir um serviço de resolução de URL dedicado, que retornará URL para tipos de entidade específicos (como Produto, Categoria, Imagem etc.)
Pelo mesmo motivo, não fornecemos o URL do produto como parte do ProductInterface
Aqui está minha resposta dedicada a esse problema (URL do produto): https://community.magento.com/t5/Programming-Questions/Retrieving-the-product-URL-for-the-current-store-from-a/mp / 55387 / realce / verdadeiro # M1400
fonte
Isso deve ser possível com o seguinte URL:
/rest/V1/products/{sku}
Isso retornará o produto e deve haver um nó para custom_attributes que contém um link de miniatura
fonte