赵斌 2009年08月18日 星期二 19:46 | 2319次浏览 | 0条评论
原文通过blogbus2zeuux工具同步发布:http:
文章发布时间:2009/8/18/4/48
这是我在写blogbus2zeuux时看到的一篇文章,原文地址:"
how atom works
".今天早起起来把它翻译了一下,希望对感兴趣的人有所帮助,本文是我初次进行翻译工作,若有纰漏还请严厉指正!
今天终于生成了自己的VPS推荐码,欢迎大家使用:
100023219_20090917242
Atom Publishing Protocol(还在制订中) 是一种新的为博客,wiki或其他类型的内容管理系统通过提供交互的web服务协议,通过的简单的利用HTTP传输XML(XML over HTTP),不需任何额外的SOAP或XML - RPC。您的代码使用HTTP请求提供的谓词GET ,POST, PUT和DELETE(正如他们所指代的事件一样)与Web资源集合交互。下面我将介绍它是如何工作的。
探索 workspace 和 collections
首 先,您向服务器的Atom链接发起带验证的GET请求(authenticated GET),以获得关于当前可用服的描述。服务器返回了一个(描述)Atom服务的XML文件,其中列出了一些列workspace,每个 workspace包含对应的collection集合。一个workspace可能是一个博客,wiki命名空间或内容集等通过您用户名/密码可以访问 的资源。
每个workspace可包含两种类型的集合(collection):项目(entries)和资源(resources)。 在最终的标准中可能会允许(至少)五种类型的集合:条目(entries),类别(categories),模板(templates),用户 (users)和集成资源(generic resources)。
下面的例子是一个博客用户的XML服务文档,该用户可以访问两个博客“My Blog”和“Marketing Team Blog” :
关于collections
既然一个workspace是一个博客,那麽博客一般都包含一系列的条 目,上传文件,资源和类别等等这样的集合。所有这些集合都通过和HTTP谓词所指代的同样的方式(GET,POSTD,ELETE,PUT)处理和作出响 应。所有这些(集合)支持分页,因此,服务器可以将collections以一个易于处理的数据块方式返回。同时还支持按日期查询(集合),因此,您可以 通过开始和结束日期过滤器来过滤collections。
为了获得一个collection,可以向网址(就是服务文档collection的' href '列出的地址) 发起一个GET请求。
服 务文档为每个collection都指定了一个URI。如果你向一个URI 发出GET请求,你会得到一个包含Atom Collection 的XML文件,其中列出了前X个该collection中的成员。如果collection中的成员多于X个,那么该文件还将包含指向下一批成员的URI ,您可以使用它来获得下一批成员。您也可以在HTTP的头部通过Range来指定一日期范围,这样可以限制返回的collection只包含那些在开始和 结束日期之间的条目。
下面的例子是一个通过向上例中My Blog的Blog Entries发出GET请求获得的collection的XML 文档。
collection的每一个成员都包含一个tile和一个URI。要获collection的成员,只需向URI发出GET请求。 如果要删除使用DELETE请求。如果要更新则利用PUT请求。下面例子是你向上例中第一个成员包含的URI发出GET请求时可能回收到的该条目的 XML:
要向collection中添加新的成员,您只需向collection的URI提交POS请求。如果您要发布一个新的条目,就将这个条目以XML格式作为数据提交 。如果是一个上传文件,直接将文件作为数据提交。
就这些。很简单吧?
如何进行身份验证?
在 Atom 标准中要求服务器的支持HTTP digest 身份验证,这可能给一些博客的实现带来困难(取决于他们的ISP和Web服务器) ,或更容易实现的CGI认证(我认为 WSSE 会将CGI模式作为人证方式,这也是我的Atom实现中所使用的方式) 。
如何支持HTTP受限的设备?
有 些设备具有已阉割的HTTP客户端。例如,有些Java J2ME支持的手机不能发出HTTP PUT或DELETE请求 。如果你不能使用PUT或DELETE请求,您可以使用一个用SOAP包装的POST请求,指定Web-Method为PUT或DELETE 。Atom服务器被要求必须支持SOAP的POST和能够返回以SOAP信封形式的结果。
关于条目的"草稿"与"发布"?
这仍然悬而未决。一些人建议针对条目不同的状态使用不同的collection(Draft,Approved,Published等) 。但更多倾向于有可能在Atom格式引进一个新的元素来描述条目的状态。
总结
下 面是我对当前使用的Atom protocol(译注:最新草案与作者描述可能会有出入)的总结。我认为这对现有的博客的API在功能和设计上的巨大改善。并且它易于实现。之所以这么 说,是因为我即将完成我的服务器和客户端的实现。我希望在不久就可以发布它。这个发布版可能独立于Roller(Atom服务器)和我的 BlogClient UI(Atom 客户端)发布 。
如果希望获得改善该协议的机会,请加入 Atom Protocol mailling list 参与讨论。最后一次呼吁规格变化现在 定于10月(译注:2005年) 。如果又Atom方面的专家阅读这篇博客:欢迎 留言 指出错误。
关于作者
:
Dave Johnson
"RSS in Atom action"的作者,现在就职于IBM/Rational I'm Dave Johnson. I'm a software developer, open source advocate, blogger and webgeek from Raleigh, North Carolina. I'm a member of the Apache Software Foundation, PMC chair for Apache Roller and a mentor for Apache Incubator projects JSPWiki and SocialSite. |
Zeuux © 2024
京ICP备05028076号
暂时没有评论