2011-05-14 72 views
5

我在寻找关于REST风格的API设计的建议。我已经阅读了很多关于REST API方案,认证/授权方式等内容。我不能确定的是,如果我真的需要使用API​​密钥。根据我的理解,如果您要监视使用情况,限制每个应用程序的请求和统计数据,使用API​​密钥很有用。REST风格的API键建议

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

更具体地讲我的网站是一样的东西SlideShare上和scribd。我想给API访问其功能,如添加和管理文档以及获取有关用户的信息。因此,例如上传一个文件,你需要以某种方式进行身份验证,并使用一个特定的帐户来做到这一点。在这种情况下是API密钥的一个要求,或者我可以坚持认证用户?

那你觉得对我来说是处理API密钥的最佳途径?或者我应该使用它们呢?有更聪明的方式来分发(创建,删除)密钥吗?

感谢提前:)

回答

4

以及你知道mashery http://www.mashery.com/和programmableweb?

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

http://www.3scale.net/

我会用统计和限制API密钥,但还没有一个像谷歌API密钥服务一些服务不

你可以轻松地创建与像
Restler http://luracast.com/products/restler/ 解决方案的API 210个Frapi http://getfrapi.com/
的Datatank http://thedatatank.com/
服务(只为Drupal)http://drupal.org/project/services

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

+0

我检查了你放在这里的那些链接。我不想使用外部服务(即使它们是免费的)。而关于使用api密钥进行某些服务,而不是将其用于其他服务,是否会影响API密钥的用途? – stormbreaker 2011-05-14 21:05:40

+0

好吧谷歌这样做是这样几年和许多其他的,也比你自己写(如果不存在一个周围的web sourceforge等)api管理软件。使用api密钥限制所有内容(不知道你的主机是谁)要好得多,因此你可以完全控制使用情况,以便滥用软件的风险要低得多,安全性也要高一些。或者每个人都可以在没有api的情况下使用它,并且可以做他们想做的任何事情(并且最终每小时将服务器的请求降低到很多)。我认为安全性更重要。 – 2011-05-14 21:18:23

+0

好的,你回答为什么我应该使用API​​密钥。如何使用它?如果我向所有请求的人提供一个API,它不会允许他们切换这些API并仍然做坏事? – stormbreaker 2011-05-15 08:21:50

2

我上面的帖子回答过 - 但跑出空位。作为免责声明,我为3scale(http://www.3scale.net)工作,所以你可能想分析我的回应基于:)。

的回答你的问题真的取决于你的资源API揭露和你的目标追踪/限制什么。这听起来像大多数功能绑定到某种用户帐户,但可以由第三方执行。

在这种情况下最有用的图案可能是有针对调用API +还用户凭证的每个应用程序的标识符(公共或秘密)。应用程序标识符可以是APIKey或甚至只是一个名称(例如“tweetdeck”)。如果你最终得到很多第三方应用程序,那么跟踪这些标识符(这意味着至少有一种方法来发布它们)并知道谁构建每个应用程序+能够关闭它们(如果只是关闭那些滥用你的用户群的人)。您可能还想对每个用户和应用可以在API上生成的流量限制进行评分,因此再次使用标识符也很有用。另外,如果您的用户身份验证通过,但允许第三方编写您的用户使用的应用程序,则必须考虑oAuth(http://www.oauth.net)以避免恶意代码/网站捕获您的用户密码。

你提到上面,你是不是热衷于外部服务 - 没问题,3比例作品实际上做所有的API身份验证您的本地SYSTEN(如与代码插件之一:https://support.3scale.net/libraries或类似光油代理: https://github.com/3scale/libvmod-3scale/),然后在云中进行跟踪。显然,它并不适合所有用例,但可以给你一些开箱即用的有用工具。

+0

谢谢:)!当我需要做这样的事情时,我会考虑3scale,因为我问的项目已经完成了。 – stormbreaker 2012-05-16 16:07:18