javascript - 来自 Sling ESP 脚本的 HTTP 请求(基于 Rhino 的服务器端 JavaScript)

标签 javascript rhino sling

如何从 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 交互的详细信息:

https://developer.mozilla.org/en-US/docs/Rhino/Scripting_Java?redirectlocale=en-US&redirectslug=Scripting_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/

相关文章:

javascript - 在悬停时显示图像只是为了实际悬停的元素

javascript - 将文件切片读取为字节并发送到服务器?

java - Rhino 中通过 HttpClient 的 XMLHttpRequest

java - 从 javascript 表达式中获取变量 (Rhino)

osgi - 如何使用 AEM Form 下拉列表中的项目加载路径

java - 获取子节点返回无法循环错误

javascript - 如何适应具有固定高度的DIV的内容

javascript - 为什么在 JavaScript 数组方法中绑定(bind)回调比使用 thisArg 更好?

java - 从 Nashorn 切换到 Rhino (Gradle)

aem - ResourceResolverFactory getServiceResourceResolver 在 AEM 6.1 中引发异常