返回
Tyk API Gateway V2022 正式版

Tyk API Gateway

立即下载

小编提示:PC版不适合移动端,如下载有问题点击反馈!

软件介绍

Tyk API Gateway是一款专业的开源API网关。开发人员都在使用的轻量级API网关软件Tyk API Gateway。为开发人员门户和API管理仪表板提供完整的生命周期API管理平台,使用此网关软件用户完全控制您的API,自由设置API访问权限,从而确保网络的安全性; TYK API网关功能强大,专业实用,使用此软件用户可以创建多个API,可以应用于多个键,通过API Gateway软件创建一个关键,以将配额和速率限制应用于API或者可以从安全策略继承。您可以有效地控制和保护您的网络访问安全性,您的朋友需要下载。

软件功能;

使用任何协议:REST,SOAP,GraphQL,GRPC和TCP。

行业标准认证:OIDC,JWT,轴承令牌,基本身份验证,客户证书等。

OPEN API标准:将Swagger和OAS2 / 3文件导入TYK中的脚手架API。

超高性能:低延迟,仅为单次CPU,以实现数千个RP水平和垂直扩展。

内容中介:转换所有内容,从请求或响应者转移到SOAP和GraphQL之间切换。

可扩展的插件架构:通过在您的选择中编写插件(从Python到JavaScript来或支持GRPC的任何语言)来定制TYK的中间件链。

速率限制和配额:保护您的上游免受每个消费者的过载和/或发挥限制。

API版本控制 - 您可以在特定时间和日期轻松设置和丢弃API版本。

粒度访问控制 - 基于每个版本和操作授予对一个或多个API的访问。

块列表/允许列表/被忽略的端点访问 - 一个严格的安全模型,一个逐个在接入点上实现严格的安全模型。

Analytics Logging  - 记录谁使用API的详细使用数据(仅限原始数据)

CORS  - 为某些API启用CORS,以便用户可以使基于浏览器的请求

Webhooks-Triggered Webhook用于诸如配额违规和身份验证故障等事件

IP允许列表 - 阻止访问不可信任的IP地址以实现更安全的交互

过载 - 可以动态更改TYK配置,并在不影响任何事件请求的情况下重新启动服务

Kubernetes本机声明API:使用开源tyk运算符(有关更多信息,请参阅OSS部分)

官方教程:

TYK测试指南

对于测试,主要问题之一是如何在表现力,可扩展性,可重复性和性能之间平衡。关于是否应该写入集成或单位测试,是否应该被模拟,如果您之前写一次测试,或者在编写测试之后,有无数讨论。由于正确答案永远不会找到,在越来越多的代码的基础上,许多人开始介绍他们的方法和独特的测试助手。即使您查看我们的小型代码库,您也可以找到3-4个方法来编写相同的测试。

本文档描述了TYK测试框架和统一标准的写入测试。

测试框架的点是:

所有测试通过完整的HTTP堆栈运行HTTP请求,与用户相同的操作

测试定义逻辑与测试运行程序分开。

仪表板,RPC和Bundler的官方仿真

“github.com/tyktechnologies/tyk/test”包中的框架。另请参阅其API文档https://godoc.org/github.com/tyktechnologies/tyk/test

让我们从示例中学习:

Tyk API Gateway

直接GitHub链接

现在,将它与前一个Go样式方法进行比较:

Tyk API Gateway

直接GitHub链接

请注意,在最后一个“Classic”方法中,我们只定义一个测试用例,并且在我们的新框架中,我们定义了6个,所有这些都是可重复的,以及共享框架和测试Runner逻辑提供的相同断言。

现在让我们逐个检查新帧中写入的测试。

初始化测试服务器

其中一个核心思路是测试应该尽可能接近真实的用户。要实现它,该框架为您提供了一种使用Tyktestserver对象编程和停止完整网关HTTP堆栈的方法,如下所示:

TS:= yewtyktestserver()

推迟Ts。关掉()

创建新服务器时,它将初始化网关本身,启动随机端口上的侦听器,并设置所需的全局变量。这与启动网关进程发生时发生的情况非常类似,但在这种情况下,您可以根据要求启动和停止。

您可以使用少量变量来配置服务器行为,例如通过将TyktestserverConfigObjectNewtykTestServer作为参数提供

单独设置控件API。这是所有可能参数的列表:

Tyk API Gateway

要关闭服务器,只需致电Tyktestserver#suchEmethod即可确保所有侦听器都会正确关闭。

加载和配置API

Tyk API Gateway

您有默认的最小最小API定义(您可以使用生成器函数来配置),以设置测试所需状态的基本概念。然后,将加载到网关中的API并准备在测试中使用。

如果需要加载多个API,请支持可变数量的参数:BuildAndLoadAPI(,...)

您还可以在没有参数的情况下调用它,在这种情况下,它将加载默认的API定义:BuildAndLoadApi()

实际上,此功能是两个较低级别的函数mashouts:buildapi和loadapi,所有返回[] * apispec数组。在某些情况下,您可能需要构建API模板,并根据需要将其加载到不同的测试中进行一些较小的修改。所以它看起来像:

Tyk API Gateway

API版本中的更新变量可能很困难,因为API版本对象位于版本图中,并禁止使用地图值。要简化此过程,有一个特殊的帮助程序更新,可以使用它:

Tyk API Gateway

在某些情况下,通过GO结构更新API定义可能有点复杂,您可能需要直接通过JSON Universal直接更新API定义:

Tyk API Gateway

运行测试

Tyk API Gateway

使用新的测试包TestCase结构定义测试,允许您定义HTTP请求详细信息并响应断言。例如,使用指定的标题{方法:“get”,路径:“/”,标题:validpassword,代码:200}告诉路径请求的路径/。发出请求后,它声明具有给定值的响应状态代码。

Tyk API Gateway

tyktestserver提供了一个测试运行程序,根据规范和断言生成HTTP请求。在大多数情况下,您必须使用Tyktestserver#运行(t * testing.t,test.testcase ...)(* http.response,错误)。请注意,它使用可变数量参数,因此如果需要通过多个测试用例,请将其作为上面的示例传递:[] test.testcase {,} ......最后添加3分。

此外,Runex具有完全相同的定义功能,但内部它使用覆盖重跳和HotReload选项来运行测试用例(现在4)。如果您需要测试依赖于热负荷函数的功能(例如过载API,加载插件包或侦听器本身),这可能是方便的。

无论运行和运行方式如何,如果您需要它,则返回最后一个测试用例响应和错误。

更改配置变量

在许多情况下,测试取决于各种配置变量。您可以直接在Config.global对象上更新它们,并使用ResetTestConfig函数恢复默认配置。

Tyk API Gateway

上游测试服务器

您可能会注意到默认API是针对测试目的创建的一些上游模拟。上游保留了Testhttpany变量的URL,但在大多数情况下,您不需要它,因为默认默认创建的API是嵌入的。默认情况下,此上游模拟将成功响应任何URL,响应将包含以下格式的请求的详细信息:

Tyk API Gateway

请注意,它包含最终请求的详细信息,例如,如果您需要测试URL覆盖功能,则原始请求的URL将与URL上游仿真不同,您可以使用以下内容:BodyMatch:“URL”: “。另请注意我们如何使用简单的BodyMatch String断言来验证JSON响应。

还有一些具有特定行为的特殊URL:

/只接受获得请求

/帖子只接受发布请求

/jwk.json用于从ommsteram下载Jwk令牌

/ WS用于测试WebSockets

/捆绑内置插件品牌网络服务器,了解更多细节

协同处理插件测试

如果要使用Python,lua或grpc插件,则需要将捆绑的清单文件和脚本打包到zip文件,将它们上传到外部文件Web服务器上的位置,并点网关指向捆绑位置。

我们的测试框架包括内置捆绑的文件服务器,为简单起见,您只提供捆绑文件的内容,它将自动执行服务器处理作为ZIP文件。

使用文件内容的对象创建一个地图[字符串]字符串,其中密钥是文件名

呼叫registerBundle(“,)将返回唯一的捆绑包ID。

创建API时,将其设置为要返回的数据包idregisterBundle。

加载Pythonauth插件:

Tyk API Gateway

创建用户会话

您可以通过调用CreateSession函数创建类似于API的用户会话:

Tyk API Gateway

如果可以使用默认设置,则可以在没有参数的情况下调用IT Createsession()

例如,如果您需要在不将其添加到数据库的情况下创建会话对象,例如,如果您需要通过API创建密钥,则可以使用CreatestadardSession()函数返回* User.SessionState对象。

自定义上游仿真

例如,如果您需要创建自定义上游测试服务器,例如,如果需要自定义TLS设置来执行相互TLS测试,则最简单的方法是使用标准GONET / HTTP / HTTPEST包和覆盖SPEC.PROXY.TARGETURLAPI URL进行测试服务器。

Tyk API Gateway

模拟仪表板

没有特定的对象来模拟仪表板,但由于仪表板是标准的HTTP服务器,您可以使用类似于“自定义模拟”部分的方法:

Tyk API Gateway

仿真RPC(混合)

当网关在混合模式下工作时,它将使用Gorpc通道与Gorpc通道与MDCB实例通信。您可以使用StartRPCMock和StopRPCMock函数来模拟RPC服务器。 StartRpcmock设置为所需配置变量内部以启用RPC模式。

Tyk API Gateway

DNS模拟

在内部测试中,我们将覆盖默认的网络解析器以使用自定义DNS服务器来模拟和创建一个强大的github.com/miekg / dns库。域 - >通过映射Helpers_test.go文件中的IP映射设置。默认情况下,您可以访问域名:localhost,host1.local,host2.local和主机

3.本地。 访问所有未知域将导致恐慌。

使用DNS模拟意味着您可以在多个域上使用API创建测试,而无需修改计算机/ etc / hosts文件。

测试框架

上述帧的使用不受TYK网关的限制,可用于各种TYK项目。 主构建块是测试运行程序。

Tyk API Gateway

您可以通过覆盖其变量来调整跑步者的行为。 例如,HTTP运行程序可以如下:

Tyk API Gateway

HTTP处理程序的单元测试可以是:

Tyk API Gateway

该包已导出上述条件:

Func testhtptptpserver(t testing.tb,baseurl字符串,testcases ... testcase)

Func testhtptphandler(t testing.tb,changes http.handlerfunc,testcases ... testcase)

软件特色:

RESTful API.

许多访问协议可用。

速率限制

配额执行

粒度访问控制

关键到日期的日期

API版本管理

黑名单/白色列表/忽略端点访问。

分析和监测

网络钩子

IP白色列表

零停机重启

通知和活动

向后兼容性

精品推荐
猜你喜欢
用户评论