关于不可知的语言:如何在RESTful Web服务中响应备用URI

关于不可知的语言:如何在RESTful Web服务中响应备用URI

How to respond to an alternate URI in a RESTful web service

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

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


我个人很想返回资源,而不是忙于重定向,尽管我怀疑这仅仅是因为我的潜意识告诉我重定向速度较慢。

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


在W3C的万维网架构,第一卷中,有关于URI别名的部分(第2.3.1节),其内容如下:

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

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


我从Ubiguchi那里得到的答案是我所需要的,除了我现在认为通过指向响应代码的HTTP 1.1规范部分的链接,重定向是必经之路。事实证明,我实际上需要301重定向,因为重定向到的URI更"正确"且更稳定,因此应用于以后的请求。


推荐阅读