【问题标题】:How to add headers to ActiveResource to create API request如何将标头添加到 ActiveResource 以创建 API 请求
【发布时间】:2015-02-28 08:33:47
【问题描述】:

我有一个 Rails 应用程序,我需要连接到外部 RESTful API(而不是另一个 Rails 应用程序),并且我得到了在 js 中工作的基本获取请求,如下所示:

<h1>JavaScript in Body</h1>

<p id="demo">A Paragraph.</p>

<button type="button" onclick="myFunction()">Try it</button>

<script>
function myFunction() {

   var method = "GET";
   var url = "https://api.appery.io/rest/1/db/collections/Menu/";
   var header = "X-Appery-Database-Id: 5476a8c5e4b05e4a44a69b0e";
   var response = "response";
   var xhr = new XMLHttpRequest();
   xhr.open(method, url);
   xhr.setRequestHeader("X-Appery-Database-Id", "5476a8c5e4b05e4a44a69b0e");
   xhr.send(null);

   // subscribe to this event before you send your request.
   xhr.onreadystatechange = function() {
     if (xhr.readyState === 4 && xhr.status === 200) {
       response = xhr.responseText;
       document.getElementById("demo").innerHTML = response;
     }
   } 
}
</script>

</body>
</html> 

现在我的 rails 应用程序中的 item.rb 如下所示

class Item < ActiveResource::Base
   self.site = "https://api.appery.io/rest/1/db/collections/Menu/"
end

在我的 show.html.erb 我有:

<% provide(:title, @user.name) %>
<% require 'active_resource' %>
<div class="row">
    <aside class="col-md-4">
    <section class="user_info">
        <h1>
            <% item = Item.all %>
            <%= item.first %>
        </h1>
        </section>
    </aside>
</div>

我收到以下错误:

失败。响应代码 = 400。响应消息 = 错误请求。

哪种有意义,因为我没有包含标题,但我不知道该怎么做。 activeresource 页面没有任何关于添加标题的示例,我不确定你是否可以只做self.header = "my header here"。我什至应该使用 activeresource 还是应该使用 restclient 之类的东西,或者我可以只使用我正在工作的 javascript 并将其添加到我的应用程序中?非常感谢任何帮助。

【问题讨论】:

    标签: javascript ruby-on-rails ruby rest activeresource


    【解决方案1】:

    不确定您要在这里寻找什么。是否有任何理由从 javascript 进行 API 调用?如果您掌握了控制器端的所有信息,您可以使用 RestClient 轻松调用:

    response = RestClient.post( 
      "https://api.appery.io/rest/1/db/collections/Menu/", 
      nil,
      :content_type => :json, :accept => :json, 
      :'X-Appery-Database-Id' => "5476a8c5e4b05e4a44a69b0e")
    

    然后您可以解析响应,并将其需要的内容发送到视图。

    【讨论】:

    • 谢谢。我只放了js代码,因为这是我想在rails中完成的,但我不知道该怎么做。我可以为正确做同样的事情吗?像这样response = RestClient.get... ??
    • 是的,与 Get 相同。在那里查看 RestClient 完整文档:github.com/rest-client/rest-client
    猜你喜欢
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 2012-12-01
    • 2017-02-15
    • 1970-01-01
    相关资源
    最近更新 更多