\

关键要点

\\

  • 在为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\

使用Ballerina构建API网关相关推荐

  1. 1分钟构建API网关日志解决方案

    访问日志(Acccess Log)是由web服务生成的日志,每一次api请求都对应一条访问记录,内容包括调用者IP.请求的URL.响应延迟.返回状态码.请求和响应字节数等重要信息. 阿里云API网关提 ...

  2. 构建微服务:使用 API 网关

    当您选择将应用程序构建为一组微服务时,您需要决定应用程序的客户端将如何与微服务交互.对于单体应用程序,只有一组(通常是复制的.负载平衡的)端点.然而,在微服务架构中,每个微服务都暴露了一组通常是细粒度 ...

  3. Spring Cloud应用开发(五:API网关服务)

    1.使用Zuul构建API网关服务: 注:本服务涉及到3个工程,起作用分别如下: ms-spring-eureka-server工程:服务注册中心,端口为8761. ms-spring-eureka- ...

  4. API 网关在微服务中的应用

    目录 一.什么是 API 网关? 二.微服务架构对 API 网关的需求 三.API 网关在微服务架构中的工作 四.API网关的实现--问题和解决方案 可扩展性和性能 反应式编程模型 服务调用 服务发现 ...

  5. 从0开始构建你的api网关--Spring Cloud Gateway网关实战及原理解析

    API 网关 API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题 ...

  6. envoy api 网关_在边缘,作为网关或在网格中构建控制平面以管理Envoy代理的指南...

    envoy api 网关 最近, Envoy已成为流行的网络组件. 马特·克莱因( Matt Klein )在几年前写了一个博客,内容涉及Envoy的动态配置API,以及它如何成为Envoy的采用曲线 ...

  7. envoy api 网关_为Envoy构建控制平面的指南-特定于域的配置API

    envoy api 网关 建立您的控制平面交互点和API表面 一旦考虑了哪些组件可能构成控制平面体系结构(请参见上一章),您将要确切考虑用户将如何与控制平面进行交互,甚至更重要的是, 用户将是谁? 要 ...

  8. lambda 使用_如何使用Lambda和API网关构建API

    lambda 使用 Do you want to access your database, control your system, or execute some code from anothe ...

  9. 巧用 API 网关构建大型应用体系架构

    近期阿里云重磅发布了BizWorks一体化的云原生应用的开发和运营平台,内置阿里巴巴业务中台构建的最佳技术实践.BizWorks提供的产品能力,普遍适用于企业云原生应用高效开发以及企业业务能力沉淀和复 ...

最新文章

  1. 如何优雅地退出python程序
  2. IAR环境下STM32+IAP方案的实现(转)
  3. addcslashes php 有什么用处,PHP addcslashes函数有什么用
  4. python安装requests
  5. java.util 常见_Java基础知识-java.util.concurrent包下常见类的使用
  6. Spring Boot系列二 Spring @Async异步线程池用法总结
  7. 云上“炼”码兵器 GitHub Codespaces
  8. 检测到目标url存在内部ip地址泄露_Cendertron,动态爬虫与敏感信息泄露检测
  9. JEECG列表嵌套查询列表子查询+号功能
  10. android 中间凹背景_Android实现边缘凹凸的View
  11. 解决tomcat的undeploy
  12. PHP数组合并的常见问题
  13. dataman软件设置中文_S7200 SMART软件常见错误处理办法
  14. 前W3C顾问Klaus Birkenbihl谈HTML5与万维网未来
  15. 01使用Python分析科比生涯数据
  16. AD9361官方例程发送端数据流向
  17. c语言 long double 输出格式,c++ 什么是`long double`的格式说明符
  18. 项目实训(十二)——FPS游戏枪械射击弹孔及子弹散射
  19. 阿里云上传图片的使用,AccessKey查看,入门级别
  20. kettle连接数据库报错:Error connecting to database: (using class org.gjt.mm.mysql.Driver) Could not create

热门文章

  1. 如何笔记本盖上连接显示器不熄屏?
  2. OpenCV-Python击中击不中HITMISS形态变换详解
  3. 误删u盘文档能恢复吗?u盘删除的文件在哪里找回
  4. js-web前端-多语言切换-data-localize
  5. 深度学习词汇表(一)
  6. 图形学的三种拾取实现与比较
  7. 最新青龙拉库命令及监控变量教学
  8. linux内核启动过程和启动第一个应用程序
  9. 电脑远程开机控制实现 免拆机安装
  10. 微信小程序app.json全局配置项