下面是我的场景:我正处于为我的启动计划/实现API的早期阶段。说API对我们的策略和所有这些都是至关重要的。耶!
我想用Apigee (或类似的)来处理所有肮脏的细节(安全,节流,等等)所以我不需要自己来实现这一切。
我找不到的是我的后端API服务器使用这个策略应该做的事情的推荐列表(更重要的是,不应该这么做)。
还有一些技术细节:我计划在后端使用Nginx/FastCGI/Qt/C++,可能与此无关。对后端的调用将完全通过代理(Apigee)进行。我将有我自己的客户网站和内部应用程序使用API作为狗粮。
我正在寻找的是一个最佳实践指南,说明如何在使用Apigee之类的东西作为总体策略的基本组成部分时实现API的一侧。我不想再发明任何轮子(或者开枪打自己的脚)!
这究竟是正确的做法吗?
谢谢大家!!
发布于 2014-04-08 05:05:11
科林
您正在寻找的是API Fa ade最佳实践。不管有没有秋千。
这里有一些最佳实践类型的内容,这些内容是由阿皮吉人生成的--然而更重要的是--这些内容并不是直接基于使用Apigee的。这些最佳实践适用于任何基于REST的API Fa ade层。
希望这能有所帮助。
发布于 2014-04-06 23:42:44
在流中放置功能的位置通常是上下文的,但是在每个代理中都有一些简单的东西:
1)密钥管理:使用API来管理您的API密钥和创建您的访问令牌会给您带来一些东西;未经授权的应用程序的第一道防线和对开发人员正在做什么的自动分析(从一个应用程序获得一个很高的错误率?主动帮助他们解决问题)。
2)基本安全策略:一旦您知道应用程序可以访问您的API,就有一些简单的安全策略应该在Apigee层上运行。有效负载强制执行(JSON和XML威胁保护,用于阻止SQL注入或其他入侵代码的正则表达式)。您还可以根据API键设置配额(不同的开发人员根据与其密钥关联的产品获得不同级别的访问权限)。您还希望设置尖峰停止,以防止API流量压倒目标服务器。
3)响应管理:确保删除与API契约无关的不必要的响应头(cookie、服务器版本等)。不需要告诉应用程序开发人员你的目标架构,但有时很难从应用服务器上禁止这些头文件。您还可能希望规则阻止来自目标服务器的意外响应(例如,包含堆栈跟踪的500个错误)。
4)缓存:在远地点缓存响应的能力驱动了其他许多“在哪里做它”的问题。但是,能够从Apigee返回缓存的响应可以减少数百毫秒的延迟,从而提高事务的每秒速度和开发人员/消费者的满意度。现在的问题是如何细粒度地获得缓存的响应,而不必转到目标服务器。
除此之外,它变成了“在哪里最容易和最有效地完成一项任务?”例如,像JSON到XML这样的东西在Apigee中很容易,但在可能运行在后端服务器上的其他平台上也很容易。
发布于 2014-04-06 11:53:37
很好的问题披露,我在3 3scale (http://www.3scale.net)工作,我们和天基竞争。不过,我会尽量以中立的方式回答这个问题。
在它的核心部分,API代理应该负责节流、分析日志、密钥执行、一些安全性以及后端节点之间潜在的负载平衡。所以你不应该需要那些在后端。因此,您应该可以在那里以原始形式传递API,但是仍然需要:
话虽如此--我鼓励您查看3 3scale -我们提供了包括API网关在内的Apigee的同等服务。它不仅具有更高的成本效益(请参阅有关网站),而且我们的解决方案也是基于NGINX,您已经在您的堆栈中-您可以添加另一个或添加到您现有的配置。
希望这有帮助,并乐意提供更多的信息,如果有用。
https://stackoverflow.com/questions/22885755
复制相似问题