Apache ShenYu ModifyResponse插件使用

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 接口调用

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值