Apache ShenYu ModifyResponse插件使用

news/2024/7/9 20:14:10 标签: apache, 数据库, postgresql, shenyu

Apache ShenYu网关使用手册

  • 1 介绍
    • 1.1 概念
    • 1.2 特性
    • 1.3 架构图
  • 2 运行
    • 2.1 运行先决条件
    • 2.1 本地运行
  • 3 插件使用
    • 3.1 ModifyResponse插件
      • 3.1.1 插件名称
      • 3.1.2 适用场景
      • 3.1.3 插件功能
      • 3.1.4 插件代码
      • 3.1.5 如何使用插件
        • 3.1.5.1 插件使用流程图
        • 3.1.5.2 接入SpringBoot应用改造
        • 3.1.5.3 启用插件
        • 3.1.5.4 配置插件
        • 3.1.5.5 接口调用

1 介绍

1.1 概念

Apache ShenYu它是Java原生API网关,用于服务代理、协议转换和API治理。

1.2 特性

服务代理: Support for Apache® Dubbo™, Spring Cloud, gRPC, Motan, SOFA, TARS, WebSocket, MQTT
安全: Sign, OAuth 2.0, JSON Web Tokens, WAF plugin
API治理: Request, response, parameter mapping, Hystrix, RateLimiter plugin
可观测性: Tracing, metrics, logging plugin
控制面板: Dynamic traffic control, visual backend for user menu permissions
拓展: Plugin hot-swapping, dynamic loading
集群: NGINX, Docker, Kubernetes
语言: provides .NET, Python, Go, Java client for API register

1.3 架构图

在这里插入图片描述

2 运行

2.1 运行先决条件

在部署shenyu-admin项目前,需初始化其所使用的数据库数据库目前支持:MySQL、PostgreSql、Oracle),其中所用到的脚本文件都存放在项目根目录下的db目录。我们这里使用的数据库是PostgreSql。
在项目pg初始化脚本目录中找到初始化脚本create-database.sql、create-table.sql,并使用客户端连接工具连接你的PostgreSql服务依次执行,由此你会得到一个名为shenyu数据库,它之后可作为shenyu-admin项目的数据库使用。
在这里插入图片描述
在这里插入图片描述

2.1 本地运行

由于我们需要研究和改造shenyu网关项目,因此我们直接从github中拉取源码在本地运行即可。拉取地址为:git clone https://github.com/apache/shenyu.git。

启动步骤:
(1)我们这里使用PostgreSql来存储,需要先初始化数据库和修改application-pg.yml的jdbc相关配置,在设置变量–spring.profiles.active = pg启动服务。
在这里插入图片描述
在这里插入图片描述
(2)使用开发工具启动org.apache.shenyu.admin.ShenyuAdminBootstrap,访问http://localhost:9095,默认用户名和密码分别为:admin和123456。
(3)使用开发工具启动org.apache.shenyu.bootstrap.ShenyuBootstrapApplication。
在这里插入图片描述

3 插件使用

Apache ShenYu将基于责任链模式由所有启用的插件来执行它。作为Apache ShenYu的核心,插件是可扩展和可热插拔的。不同的插件做不同的事情。当然,用户也可以自定义插件来满足自己的需求。

3.1 ModifyResponse插件

3.1.1 插件名称

响应修改插件。

3.1.2 适用场景

需要对接口的响应头部参数、响应HTTP状态码或响应体进行修改的场景。

3.1.3 插件功能

修改HTTP响应状态码。
添加、设置、覆盖或者移除响应头部参数。
添加、覆盖或者移除响应体参数。

3.1.4 插件代码

核心模块shenyu-plugin-modify-response。
核心类
org.apache.shenyu.plugin.modify.response.ModifyResponsePlugin

3.1.5 如何使用插件

3.1.5.1 插件使用流程图

在这里插入图片描述

3.1.5.2 接入SpringBoot应用改造

为了测试ModifyResponse插件的使用,我们需要准备一个SpringBoot应用,将这个SpringBoot应用的网关交由shenyu网关来管理。
(1)pom.xml引入集成依赖包

<dependency>
    <groupId>org.apache.shenyu</groupId>
    <artifactId>shenyu-spring-boot-starter-client-springmvc</artifactId>
    <version>2.5.0</version>
</dependency>

(2)application.yml配置注册到shenyu网关注册配置信息

shenyu:
  register:
    registerType: http #zookeeper #etcd #nacos #consul
    serverLists: http://localhost:9095 #localhost:2181 #http://localhost:2379 #localhost:8848
    props:
      username: admin
      password: 123456
  client:
    http:
      props:
        contextPath: /springboot
        appName: springboot

(3)修改Controller接口映射路径
@ShenyuSpringMvcClient(“/vehicleType”)
@ShenyuSpringMvcClient(“/getList”)

import org.apache.shenyu.client.springmvc.annotation.ShenyuSpringMvcClient;

@RestController
@AllArgsConstructor
@RequestMapping("/vehicleType")
@ShenyuSpringMvcClient("/vehicleType")
public class VehicleTypeController {

    private final VehicleTypeService vehicleTypeService;

    /**
     * 查询车辆类型
     */
    @PostMapping("/getList")
    @ShenyuSpringMvcClient("/getList")
    public RequestResult getList() {
        return vehicleTypeService.getList();
    }
}

改造完成之后,启动项目,查看控制台打印信息,看到如下输出内容说明注册到shenyu网关成功了。
在这里插入图片描述

3.1.5.3 启用插件

shenyu-admin --> 基础配置 --> 插件管理 --> modifyResponse设置为开启。
在这里插入图片描述

3.1.5.4 配置插件

Shenyu-admin插件列表 --> HttpProcess --> modifyResponse,先添加选择器,然后在添加规则。
(1)添加选择器
在这里插入图片描述
(2)添加规则
在这里插入图片描述

3.1.5.5 接口调用

在这里插入图片描述


http://www.niftyadmin.cn/n/11377.html

相关文章

在线就能设计电商主图的智能平台工具

商品要上新要如何设计新品主图&#xff1f;想设计简约分的主图素材在哪&#xff1f;下面小编教你使用这个在线工具乔拓云&#xff0c;工具内包含了设计主图用到的所有工具&#xff0c;还有海量的电商模板以及免扣素材&#xff0c;都是可以直接使用到主图设计中&#xff0c;不需…

kubctl--编辑中

kubectl exec 进入pod后&#xff0c;exit退出pod &#xff08;ctrlc也可以&#xff1f;&#xff09; 在 pod 外执行容器命令 #kubectl 查看 K8s 内节点、Pod 资源使用情况 kubectl describe node 查看 Pod 在节点上的资源分配情况&#xff08;Request、Limits&#xff09; kub…

【JVM】字节码技术:手撕 多态执行原理

一、源文件 package org.example.classLoading;import java.io.IOException; /*** 演示多态原理&#xff0c;注意加上下面的 JVM 参数&#xff0c;禁用指针压缩* -XX:-UseCompressedOops -XX:-UseCompressedClassPointers*/ public class PolymorphicTest {public static void…

【前端】博客系统——简单的页面设计

前端 传送门【前端】HTML入门 —— HTML的常见标签 【前端】CSS(1) —— CSS的基本语法和一些简单的选择器 博客系统 (简单的页面设计)目录页面介绍效果预览代码实现实现博客列表页实现导航栏 版心实现导航栏 部分版心样式实现列表页版心样式实现博客正文页实现导航栏 版心…

某事某事某事

全部 答对 答错 选择题 1.变更控制委员会(CCB)拒绝了一位主题专家(SME)提交的一项变更请求。该主题专家(SME)拒绝接受这一点&#xff1a;若不实施该变更&#xff0c;他/她就不想再继续参与项目。项目经理本应采取什么措施来避免发生这种情况&#xff1f; The change control …

【云原生之kubernetes实战】在k8s环境下部署Koodo Reader电子书阅读器

【云原生之kubernetes实战】在k8s环境下部署Koodo Reader电子书阅读器 一、Koodo Reader介绍二、检查本地k8s环境1.检查工作节点状态2.检查系统pod状态三、编辑koodo.yaml文件四、部署Koodo Reader1.应用koodo.yaml文件2.检查koodo的pod状态3.查看service状态4.查看pod详细信息…

业聚医疗第三次冲刺港交所上市,钱永勋、刘桂祯夫妇为实控人

11月23日&#xff0c;业聚医疗集团控股有限公司&#xff08;下称“业聚医疗”&#xff09;在港交所提交上市申请&#xff0c;准备在港交所主板上市&#xff0c;中金公司及建银国际为联席保荐人。据贝多财经了解&#xff0c;这已经是业聚医疗第三次递表。 在此之前&#xff0c;业…

第十四届蓝桥杯(web应用开发) 模拟赛2期 -大学组

凭空消失的TA 题解 加入第二行代码即可&#xff0c;没有使用elementUI提供的js文件&#xff0c;所以说提供的所有文件都是有用的呀~ <!-- 引入 element-ui 样式 --><link rel"stylesheet" href"./element-ui-2.15.10/index.css" /><script…