Pimcore Data Hub API查询获取图片缩略图的可行方法解析
我正在备考Pimcore Advanced Certificate,所有章节内容都已完成,但有一道多选题卡了我两周。题目是:
What are possible ways to fetch image thumbnails from Data hub API query?
给出的四个选项:
- Using Transformers for image attribute in the schema definition.
- By providing thumbnail parameter on image attribute fullpath in the query.
- By using GraphQL inline fragment.
- By just requesting fullpath of image attribute.
我自己的判断:Transformers虽然不是必须的,但应该是正确选项;我原以为第三个选项(内联片段)正确,因为需要编写特定查询;仅请求fullpath肯定拿不到缩略图,所以排除选项4。但不管选2+3,还是加1进去,结果都错,加选项4也不对,实在搞不清正确的可行方法是什么。
正确选项及详细解析
选项1:正确
在Pimcore Data Hub的Schema配置中,你可以给图片属性绑定AssetThumbnailTransformer,提前指定要返回的缩略图名称。配置完成后,查询该属性时会直接返回对应缩略图的路径,不需要在查询语句里额外加参数,这是一种预配置式的解决方案。
选项2:正确
在GraphQL查询里,请求图片的fullpath字段时,可直接传入thumbnail参数指定缩略图标识,示例代码如下:
query FetchProduct { getProduct(id: 456) { productImage { fullpath(thumbnail: "product-grid-thumb") } } }
这种方式是动态在查询中指定缩略图,无需修改Schema配置,灵活性更高。
选项3:错误
GraphQL内联片段主要用于处理接口、联合类型的多态查询场景,和获取图片缩略图没有直接关联。哪怕不用内联片段,只要用对选项1或2的方法,就能拿到缩略图路径,因此该选项不属于可行方案。
选项4:错误
只请求图片的fullpath字段且不传任何参数时,返回的是原图的完整路径,不会自动生成或返回缩略图,所以该选项明显错误。
总结:正确选项是1和2。
内容的提问来源于stack exchange,提问作者Gianmario Deriu

