文章目录
  1. 1. 如何使用Atom建模资源
  2. 2. 何时使用Atom
  3. 3. 如何使用AtomPub服务和分类文档
  4. 4. 如何针对Feed和Entry资源使用AtomPub
  5. 5. 如何使用媒体资源

Atom Syndication Format 和 Atom Publishing Protocol(也称为AtomPub)中定义了一些资源(比如Entry和Feed,还有他们的表述)以及操作这些资源的协议。Atom的设计使用了基于阅读的内容,比如HTML和纯文本。它最适用于那些主要基于文本,供人阅读的资源,例如博客,论坛,评论系统等。AtomPub用于描述语义,让客户端可以创建和修改Atom格式的资源。AtomPub还引入了服务和分类资源来帮助应用程序进行探测。

Atom和AtomPub被用于很多应用场景。尽管Atom通常用于输出博客Feed,也能进行格式扩展以用于用户简介、搜索结果、相册等应用数据。

如何使用Atom建模资源

使用Atom的好处在于互操作性,可以找到数量众多的工具和编程类库。为了使用Atom,将资源建模成Entry,集合建模成Feed。这些元素在http://www.w3.org/2005/Atom命名空间下定义,该命名空间常用的前缀为atom。

下面列举了Atom Entry和Feed内的一些元素。Atom Entry和Feed都是可扩展的,也可以引入新的属性和元素。

元素                描述
atom:author        存在于atom:feed和atom:entry内,表现创建条目/种子的作者,包含至少一个atom:name及可选的atom:uri和atom:email子元素
atom:content        存在于atom:entry内,提供普通文本、HTML或XHTML条目内容或带媒体类型的其他内容,使用src和type属性链接到任意媒体
atom:summary        存在于atom:entry内,提供条目摘要或描述。与atom:tile相似,提供type属性。
atom:id        存在于atom:entry内,包含条目的URN格式的全局唯一标识符(例如urn:guid:550e8400-e29b-41d4-a716-446655440123)。其值在条目/种子更新或移动后必须改变。
atom:link        存在于atom:feed和atom:entry内,每个条目/种子必须包含一个rel值为self的atom:link元素,可以包含relf值为alternate的多个type和hreflang属性唯一的atom:link元素组合,也可以包含链接关联资源的其他atom:link元素。
atom:title        存在于atom:feed、atom:entry和atom:source内,包含条目/种子的文本标题表述。支持type属性,值为text(默认)、thml或xhtml。
atom:update        存在于atom:feed和atom:entry内,包含条目/种子的最新更新时间。
atom:category        存在于atom:feed和atom:entry内,对条目和种子进行分类。
atom:contributor        每个Atom条目可以包含一个或多个atom:contributor元素。
atom:generator        存在于atom:entry和atom:source内,指示生成种子的软件或条目来源。
atom:icon        存在于atom:feed内,每个种子可以包含一个atom:icon元素。
atom:logo        存在于atom:feed内,每个种子可以包含一个atom:logo元素。
atom:published        存在于atom:entry内,每个条目可以包含一个atom:published元素,用于指示条目第一次发布的时间。
atom:rights        存在于atom:entry内,每个条目可以包含一个atom:rights元素,描述权利例如著作权。
atom:subtitle        存在于atom:feed和atom:source内,每个条目/源可以包含一个atom:subtitle元素。

何时使用Atom

Atom Entry和Feed的默认内容模型包括文本、HTML或XHTML内容和摘要、标识符、链接、作者、分类等。该内容模型最适合发布和聚合作为Feed形势的信息片段。然而,由于其格式获取的基本概念对大多数应用程序有益,可被用于各种场景而不是仅仅用于内容Feed。

Atom格式针对信息片段列表有很强的语义。但是对于那些目标是机器客户端的非HTML数据,Atom格式就不那么有效了。

在选择Atom作为资源表述之前,请考虑一下条件(按照重要性排序):

  1. 资源的数据模型和语义是否能与Atom Entry或Feed相对应;
  2. 元数据(如atom:author,atom:category等)对资源是否有意义;
  3. 与Atom工具的互操作性

当资源的信息模型或元数据与Atom Fedd和Entry的语法和语义自然匹配时使用Atom。即使资源的信息模型无法匹配Atom,考虑为其提供由短文本、HTML或XHTML资源摘要和链接。用户可以通过Feed阅读器等工具了解资源。

如何使用AtomPub服务和分类文档

AtomPub引入了服务文档和媒体资源等额外资源,服务文档有助于客户端发现Web服务提供的集合。服务器能够使用媒体资源将语音、视频、图像媒体或任意文档与Atom条目进行关联。

使用服务文档资源将集合汇入工作空间。该资源表述是XML文档,定义在http://www.w3.org/2007/app命名空间的service是文档的根节点。该命名空间常用的前缀为app。表述的媒体类型是application/atomsvc+xml。

服务(app:service)包含一个或多个工作空间(app:workspace)。每个工作空间包含多个的集合(app:collection),列举了所有种子URI、可接受媒体类型(app:accept)和分类(app:category)。

分类资源列举了集合内资源的分类,表述是category作为根节点的XML文档,有atom:category元素组成。表述的媒体类型是application/atomcat+xml。

如何针对Feed和Entry资源使用AtomPub

AtomPub是修改Atom Entry的应用协议。它描述如何创建、更新和删除Atom Entry,也支持编辑诸如图片、打包文件等关联的非文本媒体。如果正在使用Atom格式发布可编辑资源,考虑支持AtomPub。

允许客户端通过提交消息体为Atom Entry文档的POST请求来创建新资源。客户端可以接下来对edit关系类型的链接用PUT方法修改或用DELETE方法删除资源。

当表述是Atom Entry文档时在媒体类型上添加参数type=entry。

如何使用媒体资源

AtomPub引入的资源类型之一是媒体资源。媒体资源是除了Atom Entry文档之外的其他资源,可用于表现文档、图片、音频和视频文件等。由于媒体资源不是Atom Entry文档且可能是二进制资源,AtomPub对每个媒体资源关联一个媒体链接资源(描述并链接媒体资源的Atom条目)。

客户端通过发送POST请求来创建媒体资源。服务器创建媒体资源和媒体链接资源,并在响应的通过Location头返回媒体链接资源的URI。在媒体链接资源表述中,通过atom:content元素的src属性提供新创建的媒体资源URI。

文章目录
  1. 1. 如何使用Atom建模资源
  2. 2. 何时使用Atom
  3. 3. 如何使用AtomPub服务和分类文档
  4. 4. 如何针对Feed和Entry资源使用AtomPub
  5. 5. 如何使用媒体资源