5

我正在寻找有关 RESTful API 设计的建议。我已经阅读了很多关于 REST API 方案、身份验证/授权方式等的内容。我无法决定是否真的需要使用 API 密钥。据我了解,如果您想监控使用情况、限制每个应用程序的请求和统计数据,使用 API 密钥很有用。

我要避免的是必须创建额外的 Web 界面来添加/管理/删除应用程序和添加/删除应用程序管理员。也许有一种更简单的方法来进行 API 密钥分发。还是我真的需要那些?我的意思是,监控和限制使用很酷,听起来很有用,但它是否值得我为密钥分配做其他事情。

更具体地说,我的网站类似于 slideshare 和 scribd。我想让 API 访问其功能,例如添加和管理文档以及获取有关用户的信息。因此,例如要上传文件,您需要以某种方式进行身份验证并使用特定帐户来执行此操作。在这种情况下,是否需要 API 密钥,或者我可以坚持对用户进行身份验证?

那么您认为我处理 API 密钥的最佳方式是什么?或者我应该使用它们吗?有没有更聪明的方法来分配(创建、删除)密钥?

提前致谢 :)

4

2 回答 2

4

那么你知道mashery http://www.mashery.com/和programmableweb 吗?

也许有一些有用的资源 http://www.mashery.com/solution/collegeboard

http://www.3scale.net/

我会使用 api 密钥进行统计和限制,但也会像谷歌那样提供一些没有 api 密钥的服务

您可以使用
Restler http://luracast.com/products/restler/
Frapi http://getfrapi.com/
Datatank http://thedatatank.com/
服务(仅适用于 Drupal)http://等解决方案轻松创建 API drupal.org/project/services

还有更多:http ://blog.programmableweb.com/2011/09/23/short-list-of-restful-api-frameworks-for-php/

于 2011-05-14T20:55:26.767 回答
2

我也在上面的帖子中回答了 - 但空间不足。作为免责声明,我为 3scale (http://www.3scale.net) 工作,因此您可能希望基于此解析我的回复:)。

您的问题的答案实际上取决于您的 API 公开了哪些资源以及您要跟踪/限制什么。听起来大多数功能都与某种用户帐户相关联,但可以由第三方实施。

在这种情况下,最有用的模式可能是为每个调用 API 的应用程序提供一个标识符(公共或秘密)以及用户凭据。应用程序标识符可以是一个 APIKey,甚至只是一个名称(例如“tweetdeck”)。如果您最终使用了很多第三方应用程序,那么跟踪这些标识符(这意味着发布它们的最低限度的方法)并知道谁构建了每个应用程序 + 能够关闭它们(如果只是关闭它们)可能很有用删除那些滥用您的用户群的人)。您可能还想对每个用户和应用程序可以在 API 上生成的流量限制进行评级,因此拥有标识符再次很有用。

此外,如果您对用户进行身份验证,但允许第三方编写您的用户使用的应用程序,请务必考虑使用 oAuth (http://www.oauth.net) 以避免流氓代码/网站捕获您的用户密码。

您在上面提到您不热衷于外部服务 - 没问题,3scale 通过实际执行系统本地的所有 API 身份验证来工作(例如,使用以下代码插件之一:https: //support.3scale.net/libraries或在像 Varnish 这样的代理中:https ://github.com/3scale/libvmod-3scale/ ),然后在云中进行跟踪。显然它并不适合所有用例,但可以为您提供一堆开箱即用的有用工具。

于 2012-05-16T15:31:06.287 回答