如何响应RESTful Web服务中的备用URI

时间:2008-08-28 07:36:46

标签: language-agnostic http rest

我正在构建一个RESTful Web服务,它的一个资源有多个URI,因为有多个唯一标识符。服务器是否应该通过返回资源来响应备用URI的GET请求,还是应该将HTTP 3xx重定向发送到规范URI? HTTP 303(另请参阅)是最合适的重定向吗?

澄清:HTTP规范明确指出,重定向的选择取决于将来的请求应该使用哪个URI。在我的应用程序中,'规范'URI是最稳定的替代品;替代URI将始终指向相同的规范URI,或变为无效。

3 个答案:

答案 0 :(得分:4)

我个人非常喜欢返回资源而不是使用重定向,尽管我怀疑这只是因为我的次要信息告诉我重定向速度较慢。

但是,如果您决定使用重定向,我认为302或307可能比303更合适,尽管w3.org包含您可以使用的不同重定向代码的详细信息。

答案 1 :(得分:2)

在W3C的Architexture of the World Wide Web, Volume One下,有一个关于URI别名(Section 2.3.1)的部分,其中说明了以下内容:

“当URI别名确实成为通用货币时,URI所有者应该使用协议技术(如服务器端重定向)来关联这两种资源。当URI所有者支持将别名URI重定向到相应的”官方“时,社区会受益“URI。有关重定向的更多信息,请参阅RFC2616中的第10.3节”重定向“。有关服务器管理员的一些最佳做法的讨论,另请参阅CHIPS。”

对于它的价值,我建议使用302重定向。

答案 2 :(得分:1)

Ubiguchi的回答有我需要的东西,除了我现在认为重定向是通过响应代码的HTTP 1.1特定部分的链接。事实证明,我实际上需要301重定向,因为我重定向的URI更“正确”且稳定,因此应该用于将来的请求。