在Ruby中将JSON返回给客户端获取请求

时间:2011-07-06 17:06:05

标签: ruby-on-rails ruby web-services json

我正在努力完成红宝石服务。我的程序分解方式是2个应用程序。一个是Web服务蜘蛛,另一个是Web应用程序(尚未开发)Web应用程序将使用get post和常用的东西向爬虫发出请求。

使用curl \

查看示例帖子请求
curl -d 'url=www.whatever.com&depth=10' http://127.0.0.1:8080/requests/new

工作正常,似乎发布请求。

继承人删除

curl -x DELETE http://127.0.0.1:8080/requests/1      where 1 is id of request.

我的问题是如何制作它以便如果有人做了获取请求(即我的网络应用程序)我可以让蜘蛛以JSON回复

我假设我需要将@request变量格式化为JSON,然后让它成为响应,但我没有最模糊的方法来解决这个问题。

另外还有一个注意事项:curl get请求是以相同的方式建模的。

另一方面注意:有没有办法在堆栈溢出中标记代码而不是使用四个空格。

3 个答案:

答案 0 :(得分:0)

你可以像这样在Json发送你的参数:

curl -d "{ url: \"www.whatever.com\", depth: \"10\"}" -H "Content-Type: application/json" -H "Accept: application/json" http://127.0.0.1:8080/requests/new

对于响应,您必须使用Rails 3中的respond_to或respond_with将控制器定义为Json格式的响应

答案 1 :(得分:0)

嗯,响应通常以纯HTML格式输出。

因此,您所做的就是编写一个只接收响应数据的视图,并将其格式化为JSON。

JSON格式非常简单。因此,如果我的GET响应是两个名称的列表,例如name = 'joe'name = 'bob'

JSON将是: `{“name”:“joe”,“name”:“bob”}

...并且视图代码看起来像(伪代码):

{
<% @names.each do |name| %>
  "name":"<%=h name %>",
<% end %>
}

答案 2 :(得分:0)

如果您总是想要返回JSON,无论请求来自哪里(浏览器或蜘蛛), 然后只需从控制器返回json数据:

render :json => @object

如果您想支持蜘蛛(JSON)和来自浏览器的传统Web请求(HTML), 使用正常的respond_to(使用Rails 2示例..我还不知道Rails 3):

respond_to do |format|
  format.js { render :json => @object }
  format.html
end

并确保将视图文件放在html的正确位置。