跨越边界: REST on Rails - 编程入门网
行为良好的应用程序提供正 确处理文档的充足信息。其中一条信息叫做 HTTP Accept 头。只要多花一点力气,控制器就能利用一些 助手,用 Accept 头决定如何响应进入的请求。然后,控制器可以呈现适当的响应。请把 PeopleController 中的 list 方法改成像清单 5 一样:
清单 5. 扩展 list方法以呈现 XML
在清单 5 中,可以看到完整的基于 REST 的 Web 服务。生成的代码是 Rails 中小型的特定于域的语 句的优美示例,它扩展 Ruby 以构造一种 switch 语句。它的工作方式是这样的: respond_to 方法接受单个代码块,并传递一个实例变量(标为 wants)到代码块。 wants 对每个可能的类型都有一个方法。控制器可以为控制器期望的每个类型指定一个代码块。 如果方法名称与 HTTP Accept 头中的类型匹配,wants 方法执行对应的代码块。 如果没有指定代码块(例如 wants.html),Rails 就执行默认动作(在这个示例中,呈现 app/views/people/list.rhtml)。 这个策略允许在所有预期的客户之间共享相同的设置代码。如果需要添加期望 HTML 的 JavaScript 客户,以便让应用程序支持 Ajax,只需要添加 wants.js,如清单 6 所示: 清单 6. 为 JavaScript 客户呈现 HTML
现在已经看到了如何向只读的方法中添加 REST Web 服务。show 方法也类似,如清单 7 所示: 清单 7. 实现 show
跨越边界: REST on Rails(5)时间:2011-07-25 IBM Bruce Tate您可能已经注意到,通过 REST 看到的只有只读服务。原因是:让应用程序处理提交和删除所需要的 工作比较少。删除不需要额外的支持,因为当前的代码已经用 URL 指定了要删除的人的 ID。Rails 自动 转换 post 请求中进入的 XML,所以不需要构建任何服务器端支持。实际上,应用程序不用变就能删除、 更新和创建。可以修补每个方法呈现的 HTTP 响应,但是客户代码实际就在 HTTP 返回码之后。 现在是调用 Web 服务的时候了。 调用 Web 服务 使用现有 HTTP 协议这一策略使得调用变得简单。清单 8 显示了 Ruby 版本。请注意 HTTP Accept 头。记住,控制器根据这个头决定内容的类型。 清单 8. 从 Ruby 调用服务
清单 8 中的 Web 服务调用,在 http://localhost:3000/people/list 上调用 HTTP get 方法,并输 出响应。Ruby 有很好的库可以处理生成的 XML,但是它们超出了本文的范围。不需要用 Ruby 调用这个 服务。只需要 HTTP 的库。清单 9 显示这个服务的 Java 调用: 清单 9. 用 Java 代码调用服务
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |