Apache ShenYu ModifyResponse插件使用

news2024/12/24 9:44:54

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.coloradmin.cn/o/32201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kali没有wlan0

kali没有wlan0解决方案 第一步ifconfig发现没有wlan0 使用wget下载无线设备 命令如下&#xff1a; wget https://mirror2.openwrt.org/sources/compat-wireless-2010-06-28.tar.bz2 3. 解压刚才下载的压缩包&#xff1a; tar -xjvf compat-wireless-2010-06-28.tar.bz2 进…

【Leetcode】拿捏链表(三)——CM11 链表分割(牛客)、OR36 链表的回文结构(牛客)

作者&#xff1a;一个喜欢猫咪的的程序员 专栏&#xff1a;《Leetcode》 喜欢的话&#xff1a;世间因为少年的挺身而出&#xff0c;而更加瑰丽。 ——《人民日报》 目录 CM11 链表分割 OR36 链表的回文结构 CM11 链表分割 链表分割_牛客题霸…

【Linux】线程概念与线程控制

认识线程 线程是一个执行流&#xff08;运行代码&#xff0c;处理数据&#xff09; ​ 1.操作系统使用pcb来描述一个程序的运行-------pcb就是进程 ​ 2.linux下通过pcb模拟实现线程&#xff0c;因此linux下的线程是一个轻量级进程 ​ 3.这个轻量级进程因为公用大部分进程资…

Python编程 字典创建map与Zip

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 字典(dict) 字典创建(拓展) 拓展&#xff1a; 前言 本章将会扩展Python…

IP 地址详解(IPv4、IPv6)

文章目录1 概述2 IP 地址结构2.1 IPv4 地址结构2.2 IPv6 地址结构3 IP 地址管理3.1 地址分类策略&#xff1a;A、B、C、D、E 类3.2 无分类策略&#xff1a;CIDR3.3 地址分类策略 和 无分类策略 相结合1 概述 IP地址&#xff1a;Internet Protocol Address&#xff08;互联网协…

Flutter高仿微信-第25篇-服务条款

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 实现代码&#xff1a; /*** Author : wangning* Email : maoning20080809163.…

基于JavaWeb的物流管理系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

电视机@2022:降价、焦虑与机遇

【潮汐商业评论/原创】 双十一期间&#xff0c;以前从不参与这类抢购的Gant也加入了这场“狂欢”。用他自己的话说&#xff1a;“生活压力好大啊&#xff0c;我不上班的时候就喜欢刷剧放松&#xff0c;所以就想趁着购物节挑台性价比高的电视&#xff0c;毕竟囊中羞涩嘛&#x…

端口映射与容器互联

1. 端口映射实现访问容器&#xff1a; 在启动容器的时候&#xff0c;如果不指定对应的参数&#xff0c;在容器外部是无法通过网络来访问容器内部的网络应用和服务的。 当容器中运行一些网络应用&#xff0c;要让外部访问这些应用时&#xff0c;可以通过-p或-P参数来指定饼口映…

总结了几个做用户体验设计的原则,分享给需要的朋友

近一年来&#xff0c;Figma它可以说是体验设计领域最受欢迎的工具。最近&#xff0c;我开始频繁地工作。Axure9.0和Figma切换使用&#xff0c;深刻感受到设计细节带来的体验差异化。今天&#xff0c;通过一些细节和亮点&#xff0c;总结了工具软件体验设计的几个原则。 ​一、效…

HTTP服务器

HTTP服务器 1. 项目背景和技术特点 实现目的 从移动端到浏览器&#xff0c;HTTP 协议无疑是打开互联网应用窗口的重要协议&#xff0c;其在网络应用层中的地位不可撼动&#xff0c;是能准确区分前后台的重要协议。 完善对HTTP协议的理论学习&#xff0c;从零开始完成WEB服务器…

万字string类总结

目录 一、string类的介绍 二、string类的常用接口 1、构造函数 2. string类对象的容量操作 3. string类对象的访问及遍历操作 4. string类对象的修改操作 &#xff08;重点&#xff09; 5. string类非成员函数 6. vs和g下string结构的说明 三、string类的模拟 1. 浅拷…

c++智能指针(raii)

目录 1.智能指针的作用 2.智能指针带来的问题与挑战 3.三种不同的智能指针 4.auto_ptr 5.unique_ptr 6.shared_ptr 7.weak_ptr&#xff1b;相互引用 8.总结 1.智能指针的作用 以c的异常处理为例看看throw catch用法。有时&#xff0c;一个用new开出的空间用完还没delete…

[附源码]java毕业设计壹家吃货店网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【C语言】学数据结构前必学的结构体struct详细

佛祖说&#xff0c;他可以满足程序猿一个愿望。程序猿许愿有生之年写出一个没有bug的程序&#xff0c;然后他得到了永生。 目录 1、结构体的声明与定义 1.1结构体是什么&#xff1f; 1.2为什么要有结构&#xff1f; 1.3结构体的声明 1.4结构体成员类型 1.5结构体变量定义…

由CPU高负载引发内核探索之旅

导语&#xff1a;STGW&#xff08;腾讯云CLB&#xff09;在腾讯云和自研业务中承担多种网络协议接入、请求加速、流量转发等功能&#xff0c;有着业务数量庞大、接入形式多样、流量规模巨大的特点&#xff0c;给产研团队带来了各种挑战&#xff0c;经常要深入剖析各种疑难杂症。…

Win7纯净版系统镜像64位介绍

Win7系统是一款非常经典的系统&#xff0c;这里想为大家介绍的是Win7纯净版系统镜像64位&#xff0c;主要特点就是非常稳定&#xff0c;运行流畅、占用CPU和内存都非常少。系统非常纯净&#xff0c;使用此系统&#xff0c;可让你的电脑焕然一新&#xff01; 一、系统稳定 1、采…

科普读书会丨《被讨厌的勇气》:愤怒不是目的,是一种工具

Hello&#xff0c; 这里是壹脑云读书圈&#xff0c;我是领读人小美~ 《被讨厌的勇气》读书会目前已经进行了两期&#xff0c;成员们也共同探讨了其中第一夜和第二夜的内容。每个人都有被情绪困扰的时候&#xff0c;而阿德勒心理学告诉我们&#xff0c;即使是负面情绪也不可怕…

WebRTC 服务器搭建篇

First off All 服务器环境&#xff1a;采用的阿里云国内服务器&#xff0c;系统&#xff1a; Ubuntu 16.04 64位 。 各个服务所需要的编译环境图&#xff1a; 各个服务器对应所需编译平台 1.第一步&#xff0c;先更新下命令行工具&#xff0c;工欲善其身必先利其器&#xff…

推荐一款图表功能强大的可视化报表工具

企业信息化建设&#xff0c;大量的数据需要经过分析才能挖掘价值。因此数据的价值越来越受到大家的重视&#xff0c;大数据分析工具逐渐成为企业运营必不可少的辅助工具。俗话说工人要想做好事&#xff0c;首先要磨利工具&#xff0c;拥有一个好用的大数据分析工具尤为重要&…