2012-03-10 140 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