Magnolia CMS Delivery Endpoint过滤器失效,返回全部节点求助
Magnolia Delivery Endpoint API过滤器不生效的排查与解决办法
我来帮你梳理下过滤器失效的几个核心原因,以及对应的修复方案:
1. 过滤器参数语法错误
你当前请求直接用@name=03作为参数,但Magnolia 5.6的Delivery API要求过滤器必须通过filter参数传递,格式为filter=[属性名]:[值]。
修正后的请求示例:
curl -X GET "http://localhost:8080/magnoliaAuthor/.rest/delivery/website/v1/travel/hello?filter=@name:03"
2. 系统属性未开启导致无法过滤@name
你的端点配置里设置了includeSystemProperties: false,而@name属于Magnolia的系统属性。如果不开启这个配置,系统属性不会被加载,自然无法用它作为过滤条件。
修改配置:
includeSystemProperties: true
3. 深度配置限制了子节点加载
你设置的depth: 2意味着从根路径/开始,最多返回2级节点:
- 第1级:
/travel - 第2级:
/travel/hello
如果目标节点03是hello的子节点(第3级),这个节点根本不会被端点加载,过滤器也就找不到它。
调整depth值:
params: website: depth: 3 # 或者设为-1表示不限深度 # 其他配置保持不变
4. 子节点类型配置不匹配
你的childNodeTypes只包含mgnl:area和mgnl:component,如果目标节点03是mgnl:page类型,作为hello(page类型)的子节点会被端点拒绝返回,过滤器也无法匹配。
更新childNodeTypes:
params: website: childNodeTypes: - mgnl:page - mgnl:area - mgnl:component # 其他配置保持不变
额外提示:直接请求目标节点路径
如果你的目标是获取/travel/hello/03这个特定节点,其实不需要过滤器,直接请求对应路径更高效:
curl -X GET "http://localhost:8080/magnoliaAuthor/.rest/delivery/website/v1/travel/hello/03"
内容的提问来源于stack exchange,提问作者Albie Morken
相关产品推荐
相关产品推荐

