2012-01-25 81 views
8

一般來說,REST社區似乎不喜歡GET請求中的複雜數據。我想知道這背後是否有一個好原則,還是隻是在GET字典上對(任意url長度)限制進行了規定?REST和GET ...再次

我對urls和resources之間的對應感到滿意,但爲什麼我的GET請求不能在請求的主體中使用json或xml(HTTP規範允許的)來處理複雜的數據?

GET的意義在於,我瞭解它,GET請求表示它們不會修改服務器狀態。這似乎與請求的複雜性正交。然而,許多人建議使用PUT或POST創建複雜的查詢,然後在GET中引用。

這似乎是提升了一個約定(沒有GET請求的機構)到一個原則的狀態,帶來不幸的副作用:必須維護另一個不應該成爲資源的對象的狀態它自己 - 這就是查詢。

但也許還有一些其他原則我錯過了 - 我歡迎您的意見!

回答

4

恐懼的是,現有的網絡中介將放棄您的GET機構。幸運的是,新的httpbis規範已經重寫了關於獲取body的文本,並且讓它變得更加可怕。就我個人而言,我正在考慮使用自己的身體獲取,因爲我想記錄不安全的請求,目前我沒有簡單的方法來確定POST是否安全。 如果您可以控制位於您的用戶代理和原始服務器之間的組件,那麼我會說,繼續使用GET與身體。

+0

有趣...任何人都可以分享他們不幸的經歷與「野外」下降的身體? – shaunc

+0

不是,但是如果你遇到一個,你有什麼計劃? –

+0

轉身尾巴跑掉!但如果它只是一個可怕的傳說,而且它從未發生過任何人(傾聽),這讓我更有信心。 – shaunc