RESTful设计需要帮助

时间:2011-02-01 05:15:04

标签: rest

我正在学习开发一些RESTful代码,我在第一步就摇摇欲坠:(

此项目适用于移动平台。向用户显示登录表单,如果填写正确,则会显示一个页面,其中一半屏幕显示他已购买的书籍列表,另一半显示最近添加到书店的书籍列表(我的服务器) )。

  1. 我在我的项目中使用“LoginService”,“SearchBookService”,“SelectBookService”这样的名字......我只是想通过在所有动词上附加单词“service”来将动词转换为名词。可以吗?

  2. 由于我只需要调用一个服务(“LoginService”)后需要提供两个服务(“MyBooksService”和“RecentAddedService”)的输出,我想知道如何发送两组不同的输出....以及是否从“LoginService”重定向到“MyBooksService”& “RecentAddedService”应该是内部的(在服务器上)还是在客户端?

  3. 非常感谢!

2 个答案:

答案 0 :(得分:1)

(1)为REST资源选择好名称很重要。我建议您的资源名称(URI)类似于:

.../books/user/bob
.../books/recentlyadded

实现这些资源的代码返回作为书籍列表的表示(其中每本书的表示可能具有标题,作者,ISBN号,图像URI等)。您可以将这些模块命名为UserBooksResource和RecentAddedBooksResource。名称不应该那么重要,因为它们可以在不影响实际REST API的情况下进行更改(即URI资源名称,表示形式,HTTP操作动词等)。

(2)安全性可以通过多种方式完成。例如,如果您在Java世界中,请查看Spring Framework的安全性。这将登录处理置于产生表示的servlet之上。或者考虑使用Restlet框架,它具有出色的REST支持,并包含在请求到达REST资源代码之前发出安全性挑战的Guards概念。 Restlet还提供了为同一资源生成不同类型表示的简洁方法(例如,XML加JSON加XHTML,具体取决于客户端在Accept头中请求的内容)。

如果可以,请研究Richardson和Ruby的RESTFul Web服务(O'Reilly),这是对如何实现REST服务的非常明确的解释。

答案 1 :(得分:0)

  

我使用的名称是“LoginService”,   “SearchBookService”   我的项目中的“SelectBookService”....我   我只想把一个动词转换成一个   通过附加“服务”一词加上名词   对所有动词。可以吗?

为什么不呢?重要的是,您的命名在整个项目中是有意义的并且是一致的。这样,您或在稍后阶段处理代码的任何其他人都无法理解所请求的内容。

  

因为我需要输出两个   服务(“MyBooksService”&   他打电话后,“RecentAddedService”)   只有一个服务(“LoginService”),我   我想知道我将如何发送两个   不同的产出组合......和   是否重定向   “LoginService”到“MyBooksService”   &安培;应该是“RecentAddedService”   内部(在服务器上),或在   客户方?

我会在服务器端执行所有API请求。如果你做一个基于网络的手机应用程序,你可能不得不处理除iPhone或Android手机之外的其他手机。并非所有这些都支持javascript或默认情况下激活javascript。这里要小心!

希望能正确理解你的问题,如果没有,请再次询问。