2008-08-28 68 views
4

由於存在多個唯一標識符,因此我正在構建一個RESTful Web服務,該服務具有其資源之一的多個URI。服務器是否應該通過返回資源來響應GET請求以獲得替代URI,或者我應該將HTTP 3xx重定向發送到規範URI?是HTTP 303(另請參閱)最合適的重定向?如何響應REST風格的Web服務中的備用URI

說明:HTTP規範明確指出重定向的選擇取決於未來請求應使用哪個URI。在我的應用程序中,「規範」URI是最穩定的替代方案;一個替代的URI將始終指向相同的規範URI,或者變得無效。

回答

4

雖然我懷疑這只是因爲我的subcoscious告訴我重定向速度較慢,但​​我個人很喜歡返回資源而不是重定向。但是,如果你決定使用重定向,我認爲302或307可能比303更合適,儘管w3.org有你可以使用的不同重定向代碼的細節。

+0

一致認爲,直接告訴客戶端使用另一個URI進行另一個請求是毫無意義的。爲客戶提供您所瞭解的資源,並告訴它未來應該使用哪個URI。 – thecoshman 2015-07-23 09:40:21

2

在W3C的Architexture of the World Wide Web, Volume One,對URI的別名(Section 2.3.1),其指出以下的一段:

「當一個URI別名確實成爲通用貨幣,則URI所有者應該使用協議的技術,如服務器端重定向關聯這兩個資源當URI所有者支持將別名URI重定向到相應的「官方」URI時,社區將會受益更多關於重定向的信息請參閱10.3.3重定向RFC2616另見CHIPS關於一些討論服務器管理員的最佳實踐「。

對於它的價值,我會推薦302重定向。

1

從Ubiguchi得到的答案有我需要的,除了我現在認爲重定向是要走的路,通過鏈接到響應代碼的HTTP 1.1 specifiction部分。事實證明,我實際上需要301重定向,因爲我重定向到的URI更加「正確」和穩定,因此應該用於未來的請求。