Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在呈现页面之前,如何在服务器端执行api请求?_Javascript_Ruby On Rails_Ruby_Api - Fatal编程技术网

Javascript 在呈现页面之前,如何在服务器端执行api请求?

Javascript 在呈现页面之前,如何在服务器端执行api请求?,javascript,ruby-on-rails,ruby,api,Javascript,Ruby On Rails,Ruby,Api,我在页面上有一个JS脚本,它在页面加载时调用Y服务器,并显示一些数据。如果您查看PageSource,您可以看到调用Y服务器的脚本 我需要做的是从我的服务器向Y服务器发出api请求,并在不使用JS脚本的情况下将页面呈现给客户端。因此,如果查看页面源代码,您将不会看到任何对Y服务器的引用,因为在页面呈现给客户端之前,所有这些都会在后台发生在我的服务器上 有人知道如何完成此设置吗?寻找指导。。。文档链接?如果不清楚,请要求澄清 您需要的是直接从服务器生成html,并呈现动态页面。 您必须从模板中对h

我在页面上有一个JS脚本,它在页面加载时调用Y服务器,并显示一些数据。如果您查看PageSource,您可以看到调用Y服务器的脚本

我需要做的是从我的服务器向Y服务器发出api请求,并在不使用JS脚本的情况下将页面呈现给客户端。因此,如果查看页面源代码,您将不会看到任何对Y服务器的引用,因为在页面呈现给客户端之前,所有这些都会在后台发生在我的服务器上


有人知道如何完成此设置吗?寻找指导。。。文档链接?如果不清楚,请要求澄清

您需要的是直接从服务器生成html,并呈现动态页面。 您必须从模板中对html进行常规处理,并将其直接呈现给客户端。 例如,在php中,您的.twig文件将包含php变量,而不是静态html。 java和servlet也是如此。 页面被呈现在背面,并作为静态文件发送到客户端。 不确定ROR的确切方法

我正在尝试一个简单的例子。假设变量数据包含您希望从api获取的元素,下面是您的2个示例:

//第一种情况
staticPage1.html
[…]
var data=loadAjax(url)
window.console.log(数据)
//后面的页面与前面的页面相同


//第二个案例
已生成。someServerSideTemplate
[…]
var data={{getDataFromUrl(url)}} //一些服务器端模板语言
生成的.html
[…]
var data={“message”:“hello world”}//呈现的实际页面


我希望这是清楚的…

在高层,您需要:

  • 为API实现HTTP客户端
  • 添加调用API的代码(可能在控制器中,但可能是帮助器、模型或服务对象)
  • (可选)解析响应(这取决于响应的格式以及您需要的格式)
  • 在视图中呈现已解析的响应
  • 2和4都很简单。3将由您决定,除非您能提供具体的示例。不过,这应该很容易。剩下1个

    如果您使用的是流行的API,则很有可能。如果是内部的东西,您可以使用Net::HTTP或其他方式编写自定义的东西。只要您不需要从浏览器发送任何cookie/header,这应该非常容易

    下面是一个快速的示例,说明了如何使用和返回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 %>
    
    class SampleController
    源代码在哪里?为什么不处理api调用,然后将api调用中的数据重定向到前端脚本?从标签上看,后端似乎是Rails。谢谢,我正在编辑它作为实现示例。请不要在注释中添加多行代码,因为它不可读。使用“编辑”链接,将这些信息添加到你的答案中,你可以将其适当地格式化。我真不敢相信这有多容易。RestGem和James Mason拯救了这一天!谢谢你,伙计+1.