如何在ATOM文档中生成良好的ID?

24

显然使用URL不好-为什么会这样,以及如何生成一个好的URL?

2个回答

35

马克·皮尔格林(Mark Pilgrim)的文章《如何创建良好的Atom ID》很棒。以下是其中的一部分:

为什么不应该使用永久链接作为Atom ID

将您的永久链接URL用作<id>是有效的,但我不建议这样做,因为它会对应该被视为永久链接的元素造成混淆。不读规范的开发人员会查看您的Atom源,他们看到两个相同的信息片段,然后选择其中一个并将其用作永久链接,有些人会选择错误。然后他们去另一个源,在那里这两个元素不相同,他们就感到困惑了。

在Atom中,<link rel="alternate">始终是条目的永久链接。<id>始终是条目的唯一标识符。虽然两者都是必需的,但它们具有不同的作用。条目ID永远不应更改,即使永久链接更改也是如此。

“永久链接更改”?是的,永久链接并不像你想象中那样永久。以下是一个发生在我身上的例子。我的永久链接URL是从条目标题自动生成的,但后来我更新了一篇文章并更改了标题。猜猜吧,“永久”的链接刚刚改变了!如果您聪明,可以使用HTTP重定向将访问者从旧链接重定向到新链接(我就这么做了)。但您无法重定向ID。

Atom条目的ID绝不能更改!理想情况下,应该生成一次条目的ID并将其存储在某个地方。如果您每次都从随时间而变化的数据自动生成它,那么条目的ID将会发生变化,这就达不到目的了。


1
感谢提供互联网档案馆链接 - 几年前我曾链接到他的原始帖子,但现在发现它已经消失了。然后我想起了Hanselman的文章。 - Jeff Martin
应该注意到这一点:“ID必须在所有Atom feed中全局唯一,无论何时何地都是如此。”我自己也问过这个问题,所以其他人可能也会。 - jeromej
3
这个答案着重于告诉大家应该避免什么。那么我们应该做什么呢?使用标签URI,并按照RFC 4151的规定进行操作。 - Magnus Hoff
写某些代码因为“开发人员会感到困惑”是愚蠢的。如果他们不知道id标签是什么,那么他们就不应该从事开发工作。 - user1322720
1
作者正在谈论WordPress风格的永久链接,而不是真正的永久链接。WordPress永久链接只是动态的“干净URL”。真正的永久链接是静态的,基于实体ID,并且除非实体被删除,否则不会更改。因此,对于<id>,使用真正的永久链接确实是可以接受的,而且您应该始终在rel="alternate"中使用它们。 - dhaupin

2

使用GUID作为ID。

这取决于您使用的编程语言,但是您可以在.NET中使用System.Guid。


1
或者对于 Java,使用 java.util.UUID。 - skaffman
文章中@ cjm提供的更可读的标签(taguri)通常更有用。 - Jeff Martin
使用GUID时需要注意的一个问题是ID理论上应该在任何地方的所有源中都是唯一的。虽然冲突的概率很小,但仍然存在。因此,最好在其前缀中加入网站域名或类似信息以确保它们是唯一的。 - DjB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接