我正在构建一项 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 时,社区就会受益。有关重定向的更多信息,请参阅第 10.3 节“重定向”, RFC2616. 。也可以看看 芯片 讨论服务器管理员的一些最佳实践。”

就其价值而言,我建议使用 302 重定向。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top