我正在学习开发一些RESTful代码,我在第一步就摇摇欲坠:(
此项目适用于移动平台。向用户显示登录表单,如果填写正确,则会显示一个页面,其中一半屏幕显示他已购买的书籍列表,另一半显示最近添加到书店的书籍列表(我的服务器) )。
我在我的项目中使用“LoginService”,“SearchBookService”,“SelectBookService”这样的名字......我只是想通过在所有动词上附加单词“service”来将动词转换为名词。可以吗?
由于我只需要调用一个服务(“LoginService”)后需要提供两个服务(“MyBooksService”和“RecentAddedService”)的输出,我想知道如何发送两组不同的输出....以及是否从“LoginService”重定向到“MyBooksService”& “RecentAddedService”应该是内部的(在服务器上)还是在客户端?
非常感谢!
答案 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。这里要小心!
希望能正确理解你的问题,如果没有,请再次询问。