有没有办法发现 REST API 的所有端点?

我想知道是否有可能以编程方式发现特定API的所有端点。

因此,例如,如果我使用浏览器或curl获取此URL:https://api.twitter.com/1.1/

我可能会得到这样的东西作为JSON响应:

"TwitterAPI":{
    "version" : 1.1,
    "GET" : {
        "search/" : ["users", "trending"],
        "users/" : ["id", "handle"]
    }
}

当然,Twitter可以选择发布或不发布这种格式。因此,作为题外话,是否有任何Java或JavaScript库可以自动映射和发布您在控制器中创建的API路由?


答案 1

无法以编程方式发现 REST 服务,因为它们没有标准的注册表服务。

除了做一些疯狂的暴力搜索之外,没有办法找到正确的URL(更不用说正确的参数了)。因此,唯一的选择是记录您的API。为此,到目前为止,我看到的最佳选择是:


答案 2

一些 RESTful API 发布 Web 应用程序描述语言资源(WADL - 发音像鸭子做的步行 - 简称)。默认情况下,JAX-RS 或 Jersy webapps 将在应用程序根 URL /application.wadl 上执行此操作。Twitter的API似乎不是其中之一。许多REST纯粹主义者会争辩说,API应该是自我描述的,并且可以通过与它交互并查看它将为你提供的其他端点来自我发现。

更多关于WADL的信息来自维基百科...