我们正朝着在微服务体系结构中开发web应用的方向发展。我们考虑在API网关后面运行服务,该网关将处理身份验证,并将请求代理到适当的服务。我们在建立开发环境时遇到了一个问题。我们如何在本地机器(膝上型计算机)中开发服务,并以类似于生产(网关后面)的方式测试和运行它?
考虑以下要求:
我们的API网关位于客户端(浏览器、移动)之间,并接收请求。每个请求都应该附加一个jwt令牌(由网关生成),或者重定向到第三方提供者进行身份验证。
因此,在对用户进行身份验证(通过cookie或授权头令牌)之后,我们将请求代理到指定的服务。
发布于 2016-10-06 13:04:21
我在确切地理解您的情况中的问题时遇到了一些困难,但是如果我正确地阅读了您的文章,您的问题是如何在本地组织您的开发过程,同时仍然具有测试外部的灵活性。
对此,我说-不要。如果你要使用一个API网关,测试你的部分契约-在网关之后会发生什么。通过这种方式,您可以捕获许多由于API网关而可能仍然隐藏的问题,而且,任何测试网关本身的尝试都是徒劳的--您实际上是在测试一个已经经历了比您的过程(希望是这样的)更严格的测试的中间层,该层旨在隐藏/混淆您自己API的更精细的细节。
注意:我绝不建议您也不要测试最终结果,但我认为您的主要测试工作应该是测试您拥有和维护的代码,而不是外部抽象层。测试外部视图(IMO)用于集成测试和状态监视(尽管API网关提供程序经常提供此视图)。
至于如何设置和组织流程,我建议使用亚马逊网关或其竞争(对不起,我只使用过AWS )。该服务的主要目的是抽象出特定于API的关注点,同时让您专注于服务的实质(它“让您在市场上表达您的价值”)。
谈到将请求重定向到“本地”开发机器的问题(请注意,这实际上并不在本站点的范围内,因此如果您愿意的话,我在某种程度上“非法侵入”),您可以始终使用一些VPN技术将笔记本电脑连接到API网关。就AWS而言,我认为VPC应该允许这个- 看一下这个参考资料。
最后,这个问题叫“虔诚人”,这就是为什么我想花时间指出,任何这样的考虑都最好与更多的“系统管理员”的同事讨论,因为他们的专业知识对于建立这样的事情是必不可少的。
发布于 2016-10-06 17:38:22
您有几个选项,取决于您正在做的测试类型。要使用postman进行快速的手动测试,您可以转到jwt.io,只需将令牌复制并粘贴到标头中即可。从这种方法中你可以得到惊人的里程数。
对于自动集成测试,实际上不需要网关,您可以直接从测试库生成jwt。
对于长期的开发人员测试,您只需要一个更简单的轻量级网关,开发人员就可以在自己的机器上运行。他们一般不需要生产网关的全部功能,只需要能够执行所有的角色。您可能会发现开源项目可以满足您的需要,或者您的服务提供商有一个可下载的版本。
https://softwareengineering.stackexchange.com/questions/332972
复制相似问题