博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Ballerina构建API网关
阅读量:6244 次
发布时间:2019-06-22

本文共 1816 字,大约阅读时间需要 6 分钟。

\

关键要点

\\
  • 在为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专注于业务功能。

\\

本文将介绍如何使用为构建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\

转载地址:http://qplia.baihongyu.com/

你可能感兴趣的文章
tomcat远程调试
查看>>
APUE读书笔记-18终端输入输出-05终端选项标记
查看>>
Linux查看系统IO
查看>>
阅后即焚,Python 运维开发99速成
查看>>
Oracle正则表达式(二)
查看>>
oracle导入导出
查看>>
刘宇凡:360搜索来了,百度你怂了吗?
查看>>
windows通配符
查看>>
Linux学习之路-Linux-内部yum配置及hostname修改【11】---20171226
查看>>
详解CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI区别
查看>>
针对ASP.NET页面实时进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)...
查看>>
IDEA常用快捷键
查看>>
input 回车提交
查看>>
xp创建***拨号连接
查看>>
win下一些常用的工具软件及网管管理系统
查看>>
Index.get_indexer 方法的含义
查看>>
从C#到TypeScript - Generator
查看>>
Exchange 2010 (一) 为多台CAS/HUB配置证书
查看>>
你有合并单元格我都不怕-Lookup特殊使用破合并单元格求值
查看>>
CSS代码格式化工具
查看>>