我们正在尝试为外部端点提供一个干净的 URI 结构,以从 CQ5 中提取 json 信息。
例如,如果您想获取有关特定用户历史记录的信息(假设您拥有权限等),理想情况下我们希望端点能够执行以下操作:
/bin/api/user/abc123/phone/555-klondike-5/history.json
在 URI 中,我们将指定 /bin/api/user/{username}/phone/{phoneNumber}/history.json,以便很容易利用调度程序使缓存更改等无效,而无需使大量缓存信息无效。
我们想使用 sling servlet 来处理请求,但是,我不知道如何将变量放入路径中。
如果有来自 JaxRS 的 @PathParam 之类的东西添加到吊索路径变量中,那就太好了,但我怀疑它不可用。
我们想到的另一种方法是使用选择器来识别何时访问 api,因此可以从路径返回我们想要的任何内容,但这需要一个单一的 sling servlet 来处理所有请求,所以我对这种方法并不满意,因为它将许多不相关的代码粘合在一起。
任何对此的帮助将不胜感激。
UPDATE:
如果我们要使用 OptingServlet,然后在 Accepts 函数中放入一些逻辑,我们可以堆叠一系列 sling Servlet,并使用正则表达式从路径做出接受决策。
然后在执行期间,可以解析路径本身以获取变量。
如果您提供的数据来自 JCR 存储库,则最好按照您想要的 URL 来构建数据,这是使用 Sling 执行操作的推荐方法。
如果数据是外部的,您可以创建一个自定义的 Sling ResourceProvider,将其挂载在 /bin/api/user 路径上,并根据路径的其余部分获取或生成相应的数据。
Sling 测试套件的 PlanetsResourceProvider 是一个简单的示例,请参阅http://svn.apache.org/repos/asf/sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/resourceprovider/ http://svn.apache.org/repos/asf/sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/resourceprovider/
Sling 资源文档位于https://sling.apache.org/documentation/the-sling-engine/resources.html https://sling.apache.org/documentation/the-sling-engine/resources.html记录通用资源解析机制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)