2010-07-13 87 views
2

我有一个网页应用程序,有很多页面的表单/ object_type/object_id /显示这些对象的详细信息的URL。我也有一个RESTful API,返回对象的JSON/XML表示(在/ api/object_type/object_id /下)。 (我的对象是法律和法案,但我想这个问题是相当普遍的)。如何处理Web应用程序和RESTful API中的合并对象/资源?

有时候,我发现2个或更多的对象实际上是重复的,并描述了现实世界中的同一个对象。假设他们是/ Bill/111 /和/ Bill/222 /。在幕后,我合并了2个对象,留下了1个对象(可以说/ Bill/111 /)所有的信息,另一个对象只是对另一个的引用。

我的问题是,我应该如何在Web应用程序和API中指出合并?我不希望/ Bill/222 /返回404,因为我可能有指向它的外部链接,我不希望它们被破坏。我应该使用301永久移动吗?我是否应该返回一个正常页面(状态为200),说明该资源被检测为与合并链接相重复?我应该如何在API中处理这个问题?例如,我应该在条例草案索引中列出222吗?

回答

2

我想我会在这种情况下使用301,并且会停止在列表中包含222。 301的唯一原因是有些客户已将网址加入书签。

1

@Darrel米勒:

,我想我会用这种情况下,301将停止包括在列表222。 301的唯一原因是有些客户已将网址加入书签。

我只想补充,该系统应该接受链接到/比尔/ 222和当量/比尔/ 111,即给予用户编辑/乔/ 999,指示/比尔/ 222是乔的朋友:

PUT /Joe/999 
Content-Type: vnd.xxx+xml 

<name is-friend-of="/Bill/222">Joe</name> 

这应该是语义上结交/比尔/ 111,确实发出上述PUT后,我不会感到惊讶,当我拿回来,我看到的链接改为111

+1

保留这两个URL的唯一问题是,根据问题14范围http://www.w3.org/2001/tag/issues.html#httpRange-14的解决方案应该只有一个URL为单个资源返回200。一个资源可以有多个URI,但其他的应该返回一个重定向,如果解除引用。 – 2010-07-15 03:00:00

相关问题