Language agnostic 如何响应RESTful web服务中的备用URI

Language agnostic 如何响应RESTful web服务中的备用URI,language-agnostic,http,rest,Language Agnostic,Http,Rest,我正在构建一个RESTful web服务,它的一个资源有多个URI,因为有不止一个唯一标识符。服务器应该通过返回资源来响应对备用URI的GET请求,还是应该向规范URI发送HTTP 3xx重定向?HTTP 303(另请参见)是最合适的重定向吗 澄清:HTTP规范明确指出,重定向的选择取决于将来的请求应该使用哪个URI。在我的应用程序中,“规范”URI是最稳定的备选方案;另一个URI总是指向同一个规范URI,或者变得无效。我个人倾向于返回资源,而不是放弃重定向,尽管我怀疑这仅仅是因为我的副标题告诉

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


澄清:HTTP规范明确指出,重定向的选择取决于将来的请求应该使用哪个URI。在我的应用程序中,“规范”URI是最稳定的备选方案;另一个URI总是指向同一个规范URI,或者变得无效。

我个人倾向于返回资源,而不是放弃重定向,尽管我怀疑这仅仅是因为我的副标题告诉我重定向速度较慢

然而,如果您决定使用重定向,我认为302或307可能比303更合适,尽管有您可以使用的不同重定向代码的详细信息。

在W3C下,有一节关于URI别名()的内容,其中说明了以下内容:

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


值得一提的是,我建议使用302重定向。

Ubiguchi的回答满足了我的需要,只是我现在认为重定向是一种方式,通过链接到HTTP 1.1响应代码规范部分。事实证明,我实际上需要301重定向,因为我重定向到的URI更“正确”和稳定,而且因此,应该用于将来的请求。

同意,直截了当地告诉客户端只使用另一个URI发出另一个请求是没有意义的。将您知道的资源提供给客户端,并告诉它将来应该使用什么URI。