如何从 Sling ESP 页面发出 HTTP 请求?我可以使用 JQuery 或 Node 的 http 模块之类的东西吗?或者我必须退回到 Java 代码吗?
(Sling ESP 页面是在 Rhino JavaScript 引擎中运行的服务器端 JavaScript 页面)
最佳答案
当 sling 实现脚本语言时,它会提供一组有限的常用对象绑定(bind)。这些定义在这里:
http://sling.apache.org/apidocs/sling5/org/apache/sling/api/scripting/SlingBindings.html
此外,Rhino 还实现了一些功能来提供与 java 的集成。例如Packages变量,它包含所有顶级java包,例如java和com。这为您提供了一种直接从esp与java交互的方法,一个例子是。
Packages.java.util.Calendar.getInstance()
可以在此处找到此 java 交互的详细信息:
所以回答你的问题。 不,没有提供的 http 模块供您使用。
您的选择是:
- 放弃 esp 并编写一个 java servlet。
- 使用 Rhino/Java 集成,使用相关的 java 对象在 esp 文件中编写 HTTP 调用。
- 将 HTTP 代码编码为可重用的 OSGi 服务,并使用 java 集成来访问该服务
我的建议是选项 3,因为它提供了最佳的代码可移植性,并且最接近我所认为的“吊索”做事方式。要访问该服务,您只需使用:
var service = sling.getService(Packages.foo.bar.HttpClient.class);
关于javascript - 来自 Sling ESP 脚本的 HTTP 请求(基于 Rhino 的服务器端 JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20564196/