自定义条件参数

本文介绍如何对 org.apache.shenyu.plugin.base.condition.data.ParameterData 进行自定义扩展。

  • 新建一个工程,引入如下依赖:
  1. <dependencies>
  2. <dependency>
  3. <groupId>org.apache.shenyu</groupId>
  4. <artifactId>shenyu-plugin-base</artifactId>
  5. <version>${project.version}</version>
  6. </dependency>
  7. </dependencies>
  • 新增一个类 CustomParameterData,实现 org.apache.shenyu.plugin.base.condition.data.ParameterData 接口 ,添加注解org.apache.shenyu.spi.Join
  1. /**
  2. * This is custom parameter data.
  3. */
  4. @Join
  5. public class CustomParameterData implements ParameterData {
  6. @Override
  7. public String builder(final String paramName, final ServerWebExchange exchange) {
  8. // 自定义条件参数
  9. }
  10. }
  • 在工程的META-INF/services目录创建 org.apache.shenyu.plugin.base.condition.data.ParameterData 文件中添加如下内容:

script

  1. ${spi name}=${custom class path}

${spi name}表示spi的名称,${custom class path}表示该类的全限定名。比如:

script

  1. custom=xxx.xxx.xxx.CustomParameterData
  • 将工程打包,拷贝到网关 (bootstrap-bin) 的 libext-lib 目录。

  • Apache ShenYu网关管理系统 —> 基础配置 —> 字典管理, 找到字典编码为 PARAM_TYPE,新增一条数据,注意字典名称要为: ${spi name},图中的示例是custom

自定义条件参数 - 图1

字典类型:paramType

字典编码:PARAM_TYPE

字典名称:${spi name},填写自定义spi的名称;

字典值:使用时,下拉框的值,不要和现有的重复;

字典描述或备注信息:描述信息;

排序: 排序;

状态:打开或关闭。

  • 在添加选择器或规则时,就可以使用自定义的条件参数:

自定义条件参数 - 图2