我正在构建一个 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 更合适,尽管w3.org有您可以使用的不同重定向代码的详细信息。
Ubiguchi 的回答满足了我的需要,只是我现在认为重定向是可行的方法,通过响应代码上 HTTP 1.1 规范部分的链接。事实证明,我实际上需要一个 301 重定向,因为我重定向到的 URI 更“正确”且更稳定,因此应该用于未来的请求。