\\\关键要点
\\
- 在为WSO2 API Manager创建API网关时,我们实际上是创建了与API Manager上发布的API相关的Ballerina服务。\\t
- 请求过滤器可以访问传入的请求数据。因此,它可用于检查请求内容,对内容进行验证,复制并将请求推送到其他系统,甚至修改原始请求。\\t
- 默认情况下,客户端应用程序要调用网关上的服务需要发送由受网关信任的STS(安全令牌服务)签名的令牌(JWT)。调用请求需要符合OAuth Bearer配置。\\t
- 你可以基于Ballerina Streams构建流式查询,对从事件流上接收到的数据进行投影、过滤、窗口、流连接和模式操作。\\t
- 在微服务架构中,用户需要生成API网关的容器运行时。在Ballerina中,我们可以在服务上使用相关的Docker和Kubernetes注解,从而简化了这一过程。\
现代API是一种具有良好定义且易于理解的网络功能,可满足特定的业务需求。API网关是架构模式中的一个层,负责请求分配、策略实施、协议转换和分析,让业务API专注于业务功能。
\\本文将介绍如何使用Ballerina为WSO2 API Manager构建API网关。WSO2 API Manager是一个开源的全生命周期API管理解决方案。它具有设计和文档化API并使用各种策略发布API的能力。还提供了一个开发者门户,应用程序开发人员可以在上面发现和订阅API。它的安全组件为客户端应用程序提供了获取令牌的功能。我们可以在基于Ballerina的API网关中应用API策略。
\\在API Manager中为API生成Ballerina服务
\\Ballerina是一门旨在让集成变得简单灵活的编程语言。它提供了集成领域所需要的所有构件,例如服务、端点、断路器等等。在为WSO2 API Manager创建API网关时,我们实际上是创建了与API Manager上发布的API相关的Ballerina服务。API Manager定义了API(资源路径、动词等)和每个API目标端点的详细信息,于是我们开发了一个工具,通过其REST接口连接到API Manager,并基于一组模板将API定义转换为基于Ballerina的源代码。
\\同样的过程也适用于API Manager上定义的策略。所有策略(如API Manager上定义的配额策略)都将转换为Ballerina源代码。
\\下图描绘了代码的生成过程。
\\
\\生成的源代码被放到一个包中,Ballerina编译器编译它们,并生成一个可执行的二进制文件。
\\接下来,我们将介绍如何使用Ballerina的语言构建块和概念来创建API网关。我将解释使用每个构建块的原因,并通过代码演示如何使用它们。
\\Ballerina作为一个简单的代理
\\API网关上的API实际上是位于客户端应用程序和目标API之间的代理。它的核心职责是拦截来自客户端应用程序的请求,并确保对它们应用适当的策略。以下是Ballerina服务的一个简单示例。
\\\import ballerina/http;\import ballerina/log;\\//目标端点\endpoint http:Client targetEndpoint {\ url: \"https://api.pizzastore.com/pizzashack/v1\"\};\\//可以通过/pizzashack/1.0.0和9090端口访问这个服务\@http:ServiceConfig {\ basePath: \"/pizzashack/1.0.0\"\}\service\u0026lt;http:Service\u0026gt; passthrough bind { port: 9090 } {\\ @http:ResourceConfig {\ methods:[\"GET\"],\ path: \"/menu\"\ }\ passthrough(endpoint caller, http:Request req) {\\ //把客户端请求转发到目标端点的/menu上\ var clientResponse = targetEndpoint-\u0026gt;forward(\"/menu\