很快,这是我的场景:我正处于为我的初创公司规划/实施API的早期阶段。 所述API是我们战略的基础。 耶!
我希望使用 Apigee(或类似)来处理所有肮脏的细节(安全性、限制等),所以我不需要自己实现所有这些。
我不太能找到的是我的后端 API 服务器应该使用此策略执行(更重要的是,不应该执行)的操作的推荐列表。
还有一些技术细节:我打算在我的后端使用Nginx/FastCGI/Qt/C++,也许不相关。 对此后端的调用将仅通过代理 (Apigee) 进行。 我将拥有自己的客户端网站和内部应用程序,使用 API 作为狗粮。
我正在寻找的是当使用Apigee之类的东西作为整体策略的基本组成部分时实现我的API的最佳实践指南。 我不想重新发明任何轮子(或搬起石头砸自己的脚)!
这甚至是正确的方法吗?
谢谢大家!!
流中放置功能的位置通常是上下文相关的,但在每个代理中放置一些简单的东西:
1)密钥管理:使用Apigee管理您的API密钥并铸造您的访问令牌可以为您提供一些东西;针对未经授权的应用的第一道防线,以及关于开发人员正在做什么的自动分析(从一个应用中获得高错误率?与他们联系并帮助他们主动解决问题)。
2)基本安全策略:一旦您知道应用程序被允许访问您的API,就应该在Apigee层上运行一些简单的安全策略。 有效负载实施(JSON 和 XML 威胁防护、用于阻止 SQL 注入或其他侵入性代码等内容的正则表达式)。 您还可以根据 API 密钥设置配额(不同的开发人员根据您与其密钥关联的产品获得不同级别的访问权限)。您还希望设置峰值阻止,以防止 API 流量压倒目标服务器。
3) 响应管理:确保删除与 API 协定无关的不必要的响应标头(cookie、服务器版本等)。 无需告知应用程序开发人员您的目标架构,但有时很难从应用程序服务器中抑制这些标头。您可能还希望规则阻止来自目标服务器的意外响应(例如,可能包含堆栈跟踪的 500 个错误)。
4)缓存:在Apigee中缓存响应的能力驱动了很多其他的"在哪里做"的问题。但是,能够从 Apigee 返回缓存响应可以将延迟降低数百毫秒,从而提高每秒事务数和开发人员/消费者满意度。现在的问题是,如何在不必转到目标服务器的情况下获得缓存的响应。
除此之外,它变成了"哪里最容易和最有效的任务?例如,像JSON到XML这样的事情在Apigee中很容易,但在后端服务器上运行的其他平台也很容易。
好问题 - 披露 我在3scale(http://www.3scale.net)工作,我们与Apigee竞争。不过,我会尝试以中立的方式回答这个问题。
API 代理的核心是负责限制、分析日志记录、密钥实施、一些安全性以及跨后端节点的潜在负载平衡。因此,您不应该在后端中需要任何这些。因此,您只需以原始形式交付 API 就可以了,但是您仍然需要:
- 确保你拥有的后端终结点集随通过的流量而缩放。
- 各种网关可能会设置要在代码中注意的控制标头(例如用户 ID、哈希、安全令牌)。
- 您可能希望将后端配置为通过网关接受来自其他任何地方的流量。
说了这么多 - 我鼓励你看看3scale - 我们为Apigee提供等效的服务,包括API网关。它不仅更具成本效益(请参阅网站),而且我们的解决方案还基于您堆栈中已有的 NGINX - 您可以添加另一个或添加到现有配置中。
希望有帮助,如果有用,很乐意提供更多信息。
Apigee 4G堆栈太棒了! 我对他们在很多层面上的实施印象深刻(顺便说一句:"客户"而不是"竞争对手"),公平地说,自从我也看过 3Scale 以来已经有很长时间了,所以我在他们的产品上落后于时代
Apigee 功能非常丰富,快速而轻巧,过程延迟非常小。
除了网关服务外,Apigee提供的使用情况分析功能也是一个主要卖点;我很惊讶在我开始使用分析数据之前,我是多么处于黑暗中。
在此处观看视频:https://community.apigee.com/learn/create-and-manage-apis
还有一个分析系列。
Colin,
您正在寻找的是 API 外观最佳实践。[有或没有阿皮吉。
以下是一些由Apigee人员生成的最佳实践类型内容 - 但更重要的是 - 这些内容并不直接基于使用Apigee技术本身。这些最佳实践适用于任何基于 REST 的 API 外观层。
希望这有帮助。
- 关于 API 外观模式的电子书
- API 外观图案网络用户的视频播放列表