我有一个rails应用程序,我需要连接到外部RESTful API(而不是另一个rails应用程序),我得到了基本的get请求在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并将其添加到我的应用程序中?非常感谢任何帮助。
答案 0 :(得分: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")
然后,您可以解析响应,并向视图发送所需内容。