2012-03-10 111 views
1

我正在为移动应用程序(Sencha Touch)构建Web服务,并且我正好用正确的方式来解决这个问题(主观性为“正确”)。如何在RESTful API中处理参数

这是我的情况。
我正在使用Google日历,并通过JSON将其推送到移动应用程序。我在这里有两个选择,我不知道如何去解决这个问题。

选项1是通过查询字符串传递calendarID。这允许我们在需要的时候在移动应用配置中换出日历ID。

实施例:
http://example.com/calendar/[email protected]&callback=asdf

选项2是使用一个配置文件上的web服务来更新calendarID

实施例:
http://example.com/calendar/events?callback=asdf

我是明智的方式是使用Web服务配置,还是更好地从移动应用程序传递配置?

【注】日历的所有用户

回答

1

之间共享通常情况下,在RESTful系统中,你不应该依赖比什么是传回给你其他任何公开的数据。但是,听起来这更像是公共用户不会关心的实现(私有)细节。所以,我发现将它存储在配置文件中没有问题,因为它听起来像每个请求都是一样的。

这是我的承担,至少。

+0

是的,这是一个私人API。那么你是指在应用程序或API中“没有问题存储在配置中”? – 2012-03-10 16:07:01

+0

我指的是将配置存储在API中。如果您必须将其存储在应用程序中,那么这是来回传递的信息,并且应该在参数中。 – 2012-03-10 16:09:45

+0

听起来对我来说很合理,谢谢。 – 2012-03-10 16:13:00

1

在这两个选项中,选项一会被认为更符合REST原则。

URI旨在为唯一资源的标识符。如果您选择了两项,即使用户A和用户B有两个不同的日历,用户A和用户B的日历也会具有相同的URI(http://example.com/calendar/events?callback=asdf)。

然后,您的应用将依赖配置文件的状态来确定如何响应此URI。 REST通常主张无国籍状态

+0

虽然我完全同意你的意见,但我想你可能误解了描述(或我做了:))。 calendarid是后端实现细节,对每个用户都是一样的。如果我误解了,那么你是正确的,正如我在上面的回答中所解释的:) – 2012-03-10 16:30:43

+0

明白了。目前还不清楚在问题的后端只使用了一个日历。如果它是一个应用程序范围的设置,那么你肯定不希望它被最终用户改变(这与类似于让最终用户选择数据库名称作为URI的一部分),所以是的选项二是要走的路。接得好。 – nategood 2012-03-10 16:41:28

+0

对,对不起。它是我们公众的应用程序,它向每个人展示了一个日历。我应该更好地解释。 – 2012-03-10 16:47:41