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

新手上路,请多包涵

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

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

我可能会得到类似这样的 JSON 响应:

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

当然推特可以选择发布或不发布这种格式。那么作为一个附带问题,是否有任何 Java 或 JavaScript 库可以自动映射和发布您在控制器中创建的 API 路由?

原文由 4m1r 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 599
2 个回答

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

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

原文由 Gergely Bacso 发布,翻译遵循 CC BY-SA 3.0 许可协议

一些 RESTful API 发布了 Web 应用程序描述语言资源(WADL - 发音类似于鸭子走路 - 简称)。 JAX-RS,或者至少 Jersy webapps 将默认在应用程序根 URL /application.wadl 上执行此操作。 Twitter 的 API 似乎不是其中之一。许多 REST 纯粹主义者会争辩说,API 应该是自我描述和自我发现的,只需与其交互并查看它会为您提供哪些其他端点。

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

原文由 David 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题