我有一个 Web 应用程序,它有很多页面,其 URL 的形式为/object_type/object_id/,其中显示了此对象的详细信息。我还有一个 RESTful API,返回我的对象的 JSON/XML 表示(在/api/object_type/object_id/下)。 (我的对象是法律和法案,但我想这个问题相当笼统)。
有时,我发现我的两个或更多对象实际上是重复的,并且描述了现实世界中的同一个对象。假设它们是/Bill/111/和/Bill/222/。在幕后,我合并了 2 个对象,留下 1 个对象(比如/Bill/111/)包含所有信息,而另一个“空”只引用另一个对象。
我的问题是,我应该如何在 Web 应用程序和 API 中指示合并? 我不希望/Bill/222/返回 404,因为我可能有指向它的外部链接,我不希望它们被破坏。我应该使用 301 Moved Permanently 吗?我是否应该返回一个正常页面(状态为 200),说明此资源被检测为重复,并附有指向合并资源的链接?我应该如何在 API 中处理这个问题?例如,我应该在 Bills 索引中列出 222 吗?
最佳答案
我想我会在这种情况下使用 301,并停止在列表中包含 222。 301 的唯一原因是某些客户端已将 URL 加入书签。
关于language-agnostic - 如何处理 Web 应用程序和 RESTful API 中合并的对象/资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3234560/