我正在努力完成红宝石服务。我的程序分解方式是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请求是以相同的方式建模的。
另一方面注意:有没有办法在堆栈溢出中标记代码而不是使用四个空格。
答案 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的正确位置。