我正在为一个新的内部Web服务编写RESTful API的规范。这个规范并不是很长,也相当简单,但即使如此,这是我第一次使用严格的REST(而不是出于实际原因而避免使用PUT
和DELETE
等方法)。我想知道是否有任何标准方法或最佳实践来记录REST接口?我希望团队的其他成员一眼就能理解它,而且任何想编写客户端的人都能在不了解底层代码的情况下这样做。
我正在为一个新的内部Web服务编写RESTful API的规范。这个规范并不是很长,也相当简单,但即使如此,这是我第一次使用严格的REST(而不是出于实际原因而避免使用PUT
和DELETE
等方法)。我想知道是否有任何标准方法或最佳实践来记录REST接口?我希望团队的其他成员一眼就能理解它,而且任何想编写客户端的人都能在不了解底层代码的情况下这样做。
当然,理想情况下REST API应该使用HATEOAS并且是超文本驱动(大量使用媒体类型),但为开发人员提供简单易懂的人性化文档也是有帮助的。
以下是一些有用的生成此类文档的特定工具:
rel
部分是链接关系,xxx
是已建立关系的URI。application/vnd.acme.services+xml
是一个带有 xml
序列化的文档,它描述了应用程序可能想要处理的链接列表。
<links>
<link rel="http://rel.acme.org/customers" href="http://www.acme.org/services/customers" type="application/vnd.acme.customers+xml" />
</link>
applcation/vnd.acme.customers+xml
是一个包含xml
序列化的文档,用于描述客户信息。
<customers>
<customer firstname="Darth" lastname="Vador" href="http://www.acme.org/services/customers/28" />
</customer>
重点是提供一种方法给开发者跟随你定义的链接。首先找到指向索引的链接,以便他们可以获取可以导航到的事物列表。
一旦他们发现那个文档,他们就会发现他们可以在某个Uri上查看客户列表,并可以对其进行GET
请求。
如果他们发现了感兴趣的客户,他们可以跟随定义在/customers/customer/@href
中的链接并发出GET
请求来检索该客户的表示形式。
从那里开始,你的媒体类型可以嵌入可用于用户的操作,使用更多的链接。您还可以选择在资源上发出OPTIONS请求,以了解是否允许删除资源,或者PUT请求以在修改后将文档保存回去。
因此,良好的文档永远不应:
doc
元素中包含可读的人类文档,例如描述、概念、入门介绍、使用技巧等,通过包含HTML元素并使用XHTML命名空间。这可以大大提高文档的可读性!https://gist.github.com/4496972
一个演示:http://pastie.org/5657190 它只是在您的源代码中使用自定义注释标签。这也可以是记录任何源代码(语言)的好起点。