4m1*_*m1r 32 javascript java curl http facebook-graph-api
我想知道是否有可能以编程方式发现特定API的所有端点.
例如,如果我使用浏览器或卷曲获取此URL:https: //api.twitter.com/1.1/
我可能会得到类似这样的JSON响应:
{"TwitterAPI":{
"version" : 1.1,
"GET" : {
"search/" : ["users", "trending"],
"users/" : ["id", "handle"]
}
}
Run Code Online (Sandbox Code Playgroud)
当然,Twitter可以选择发布或不发布此格式.所以作为一个附带问题,是否有任何Java或Javascript库可以自动映射和发布您在控制器中创建的API路由?
Ger*_*cso 33
由于没有标准的注册表服务,因此无法以编程方式发现REST服务.
除了做一些疯狂的暴力搜索之外,没有办法找到正确的URL(更不用说正确的参数)了.所以唯一的选择是记录您的API.为此,我目前看到的最佳选择是:
Dav*_*vid 10
一些RESTful API发布了Web应用程序描述语言资源(WADL - 发音类似于鸭子所做的步骤 - 简称).JAX-RS或至少Jersy webapps默认会在应用程序根URL /application.wadl上执行此操作.Twitter的API似乎不是其中之一.许多REST纯粹主义者认为API应该是自我描述的,并且只需通过与它交互并查看它将为您提供的其他端点即可自我发现.
您应该能够通过只知道初始入口点来发现您需要了解的有关 REST API 的所有信息。这是 REST 的基本要点之一;它应该是超媒体驱动和自我描述的。这也是最不为人知的原则之一。资源的发现取决于服务器响应中的超媒体链接。
早在2008 年,Roy Fielding 就开始对人们编写基于 HTTP 的 API 并称它们为 REST 感到恼火,因为它是热门的新事物。以下是他提出的几点;
REST API不得定义固定的资源名称或层次结构(客户端和服务器的明显耦合)。服务器必须能够自由控制自己的命名空间。相反,通过在媒体类型和链接关系中定义这些指令,允许服务器指示客户端如何构建适当的 URI,例如在 HTML 表单和 URI 模板中完成的操作。[这里的失败意味着客户端由于带外信息而假设资源结构,例如特定于域的标准,这是面向数据的等效于 RPC 的功能耦合]。
和
除了初始 URI(书签)和适用于预期受众的标准化媒体类型集(即,预期任何可能使用 API 的客户端都能理解)之外, REST API应该在没有任何先验知识的情况下输入。从那时起,所有应用程序状态转换都必须由客户端选择服务器提供的选项来驱动,这些选项存在于接收到的表示中或由用户对这些表示的操作暗示。可以通过客户端对媒体类型和资源通信机制的了解来确定(或限制)转换,这两者都可以即时改进(例如,按需代码)。[这里的失败意味着带外信息正在推动交互而不是超文本。]
这在实践中意味着入口点(通常使用“/”的根 URI)包含指向其他 REST API 的链接。这些 API 将包含指向其他 API 等的链接。应该没有没有链接的 API。这意味着它是不可发现的。
这里的其他答案从根本上是错误的,因为他们没有承认 REST 的最基本原则。
归档时间: |
|
查看次数: |
47658 次 |
最近记录: |