问题 用于记录/生成RESTful / HTTP RPC API的最佳工具是什么? [关闭]


关于基于REST / HTTP的API等已发布并回答了许多问题,但似乎没有关于以下问题的信息很多:

有哪些工具可用于记录HTTP-RPC API? 哪种工具最好?

可以找到2009年1月以来的类似问题(特定于ASP.NET) 这里,但没有答案。

我正在开发专业和个人项目(.NET MVC / OpenRasta,PHP,Coldfusion等)的几个API,我没有找到任何特别的东西来帮助记录这些API。我不是在寻找基于代码解析/擦除或类似的东西的自动生成。您可能已经知道基于RESTful / HTTP的 API 应该是客户端和平台不可知的;因此我希望任何文档工具都是一样的。


一个体面的工具可能具有的功能:

  • 指定URL / URI格式/结构
  • 请求/响应格式和方法(GET / POST / etc,XML / JSON / etc)
  • 对端点/ API调用进行分类(例如在身份验证下对多个呼叫进行分组)
  • 自动生成静态参考文件/文档,如下例所示
  • 包括示例,测试用例等

以下是我认为合适的API文档/参考的一些示例:

http://dev.twitter.com/doc/post/statuses/destroy/:id

http://www.salesforce.com/us/developer/docs/api_rest/index.htm 

http://www.flickr.com/services/api/


12967
2018-06-06 15:15


起源

lunatech-labs.com/open-source/jax-doclets 看起来很有希望,但我自己没有用过它。此外,它是特定于Java的,但也许它背后的想法将被移植到其他语言...... - MatrixFrog
如果我使用Java,这将是很好的:P但是,它肯定对未来的Java项目很有用,所以感谢链接! - Colin
我为RESTful API文档创建了一个简单的模板: github.com/berb/rest-doc-template 也许它对你也很有用。如果没有,您可能想要fork并将其用作基础。 - b_erb
RESTful API文档的另一个很好的例子: twilio.com/docs/api/rest/call - Nikola Petkanski
关于一些选项的文章: apievangelist.com/2014/01/16/... - JasonS


答案:


昂首阔步 可能值得一看你需要的。我使用它来记录使用Jersey的java应用程序公开的REST入口点,但看起来你也可以将它与其他语言一起使用。


8
2018-02-11 09:50



这几乎就是我想要的。谢谢 :) - Colin


这种工具不存在的原因之一是因为RESTful API的文档不应包含以下任何项目:

  • 指定URL / URI格式/结构
  • 请求/响应格式和方法(GET / POST / etc,XML / JSON / etc)
  • 对端点/ API调用进行分类(例如在身份验证下对多个呼叫进行分组)

RESTful API文档是关于记录所使用的媒体类型及其相关的应用程序语义。你应该期待生产看起来更像的东西 这个

您提供的示例是基于HTTP的RPC API,这就是他们需要此类端点文档的原因。它们只是名义上的RESTful。现在,为什么人们不创建自动记录基于HTTP的RPC API的工具,我真的不能告诉你。也许是因为编写这些API的人忙于维护它们,以至于没有时间编写文档工具!


4
2018-06-06 15:33



我明白你的意思,我不打算争论语义,例如 en.wikipedia.org/wiki/Restful 这个问题很容易让人误解。就个人而言,我将RESTful应用程序和RESTful API区分为两个不同的实体。但是,为了理智,我会更新我的问题更具体! - Colin
-1:教条式的讽刺超过实用性。 REST API也需要文档。我希望收到哪些HTTP状态代码以进行验证?如何处理身份验证?我应该使用哪个字符集?有效载荷是什么样的?它的任何部分是可选的吗?各个组件接受哪种数据?你注意到这些东西,作为应用程序语义,值得记录,但你似乎否认一个可以用来轻松记录这个的工具应该存在,相反意味着工具的存在意味着你已经选择了错误解决方案 - Jesper
@jesper用于验证的状态代码:400。虽然www-authenticate标头表示身份验证,但仍会处理身份验证。媒体类型或链接关系将告诉您有效负载的外观。字符集?媒体类型的文档。可选组件,媒体类型文档。如果一个工具可以神奇地记录它,那么你最终可能会得到说“GET / Customer来检索客户”的文档。哪个恕我直言是100%多余的。在RESTful系统中,资源的发现应该是动态的,而不是文档中的。 - Darrel Miller
@DarrelMiller:您必须谈论不同类型的REST API。 所有这些都是Twitter的API文档。我完全同意像这样的伪文档完全没有价值。那不是原来的问题;它是“如何将合理的文档附加到我的调用列表”,在REST上下文中将是资源列表和允许的操作。 REST不仅限于HATEOAS,您的积分更适用。 - Jesper
@Jesper“REST不仅限于HATEOAS”显然,发明该术语的人并不同意: roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven - Darrel Miller


经过大量研究后,我发现这不是我想要的工具。有许多工具在正确的方向上迈出了一大步,但通常是特定于语言的,并且不生成HTTP API / RPC参考文档,而是生成Code / Library / API参考文档。

因此,我计划从头开始创建我需要/想象的工具。如果我有什么要展示的话,我会更新我的答案。


0
2018-06-23 17:20



有关此工具创建的任何更新? - rtdp
我已经为该工具创建了规范,并创建了一个数据模式,但尚未开始构建它。 - Colin


你应该看一下Swagger应用程序,正如@ zim2001已经提到的那样。它有一个Swagger-ui组件,它是一个简单的html和javascript应用程序,用于读取后端应用程序记录的json数据。有适用于多种语言的适配器,包括php和java。

如果您正在使用PHP的Symfony2框架,这里是可立即使用的捆绑包,用于自动生成RESTful服务文档:

我不喜欢这样的生成器的一件事是缺少翻译,所以如果你想提供在许多语言上通过RESTful服务公开的API的文档 - 你不能。


0
2018-02-11 15:47