我在页面上有一个JS脚本,它在页面加载时调用Y服务器并显示一些数据。如果您查看页面源,您可以看到调用Y服务器的脚本。
我需要做的事情是从MY服务器向Y服务器发出api请求,并在没有JS脚本的情况下将页面呈现给客户端。因此,如果您查看页面源代码,您将看不到对Y服务器的任何引用,因为在将页面呈现给客户端之前,所有这些都将在后台发生在我的服务器上。
有谁知道如何完成此设置?寻找指导......链接到文档?如果不清楚,请询问澄清。
答案 0 :(得分:2)
在较高的层面上,您需要:
2& 4很容易。除非你能提供具体的例子,否则3将取决于你。不过应该很容易。离开1。
如果您使用的是热门API,则client has already been written很有可能。如果它在内部,您可以使用Net :: HTTP或其中一个popular HTTP client libraries编写自定义内容。只要您不需要从浏览器发送任何cookie /标题,这应该非常简单。
以下是使用RestClient和返回HTML的API的示例。
class SampleController < ApplicationController
def index
@mydata = RestClient.get('http://path.to/your/api?with=params')
end
end
# /app/views/index.html.erb
<h1>Here's Your Data</h1>
<%= raw @mydata %>
答案 1 :(得分:0)
您需要的是直接从您的服务器生成您的html,并呈现动态页面。 您必须从模板中推广您的html,并将其直接呈现给客户端。 例如,php,你将拥有带有php变量的.twig文件,而不是你的静态html。 对于java,使用servlet也是如此。 页面呈现在后侧,并作为静态文件发送到客户端。 对于ROR的确切方法不确定。
我正在尝试一个简单的例子。想象一下,变量数据包含你想从你的api获得的元素,这是你的2 ex:
//第一个案例
staticPage1.html
[...]
var data = loadAjax(url)
window.console.log(数据);
//从后面提供的页面在前面是相同的
//第二种情况
生成.someServerSideTemplate
[...]
var data = {{getDataFromUrl(url)}}
//一些服务器端模板语言
generated.html
[...]
var data = {“message”:“hello world”} //呈现的实际页面
我希望很明显......