tzssangglass commented on a change in pull request #95: URL: https://github.com/apache/apisix-java-plugin-runner/pull/95#discussion_r765800772
########## File path: docs/zh/Quick Start.md ########## @@ -0,0 +1,110 @@ +### Quick Start + +#### 一、准备工作 Review comment: ```suggestion ### 准备工作 ``` ########## File path: docs/zh/Quick Start.md ########## @@ -0,0 +1,110 @@ +### Quick Start + +#### 一、准备工作 + +* JDK 8 + +* Clone the [apisix-java-plugin-runner](https://github.com/apache/apisix-java-plugin-runner) project. + +#### 二、开发扩展插件过滤器 + +在`runner-plugin` 模块 `org.apache.apisix.plugin.runner.filter` 包下编写过滤器处理请求,过滤器要实现`PluginFilter` 接口,可以参考 `apisix-runner-sample` 模块下的样例,官方提供了两个样例还是很全面的,一个是请求重写[RewriteRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/RewriteRequestDemoFilter.java),一个是请求拦截[StopRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/StopRequestDemoFilter.java)。 + +```java +@Component +public class CheckTokenFilter implements PluginFilter { + @Override + public String name() { + return "CheckTokenFilter"; + } + + @Override + public Mono<Void> filter(HttpRequest request, HttpResponse response, PluginFilterChain chain) { + /* + * todo your business here + */ + + + return chain.filter(request, response); + } +} +``` + +#### 三、部署 + +插件写好后怎么部署是关键,apisix-java-plugin-runner 与 APISIX 用 Unix Domain Socket 进行进程内通讯, +所以他们要部署在一个服务实例,并且APISIX启动的过程中会带着apisix-java-plugin-runner一起启动,如果是容器化部署就必须在一个容器里运行。 + +所以如果是容器部署就需要把apisix-java-plugin-runner 与 APISIX 生成在一个docker image里。 + +先打包`apisix-java-plugin-runner` Review comment: ```suggestion 先构建 `apisix-java-plugin-runner` 的可执行 jar ``` ########## File path: docs/zh/Quick Start.md ########## @@ -0,0 +1,110 @@ +### Quick Start + +#### 一、准备工作 + +* JDK 8 + +* Clone the [apisix-java-plugin-runner](https://github.com/apache/apisix-java-plugin-runner) project. + +#### 二、开发扩展插件过滤器 + +在`runner-plugin` 模块 `org.apache.apisix.plugin.runner.filter` 包下编写过滤器处理请求,过滤器要实现`PluginFilter` 接口,可以参考 `apisix-runner-sample` 模块下的样例,官方提供了两个样例还是很全面的,一个是请求重写[RewriteRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/RewriteRequestDemoFilter.java),一个是请求拦截[StopRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/StopRequestDemoFilter.java)。 + +```java +@Component +public class CheckTokenFilter implements PluginFilter { + @Override + public String name() { + return "CheckTokenFilter"; + } + + @Override + public Mono<Void> filter(HttpRequest request, HttpResponse response, PluginFilterChain chain) { + /* + * todo your business here + */ + + + return chain.filter(request, response); + } +} +``` + +#### 三、部署 + +插件写好后怎么部署是关键,apisix-java-plugin-runner 与 APISIX 用 Unix Domain Socket 进行进程内通讯, +所以他们要部署在一个服务实例,并且APISIX启动的过程中会带着apisix-java-plugin-runner一起启动,如果是容器化部署就必须在一个容器里运行。 Review comment: ```suggestion apisix-java-plugin-runner 与 APISIX 用 `Unix Domain Socket` 进行进程间通讯,需要部署在同一个宿主环境。apisix-java-plugin-runner 的生命周期由 APISIX 管理,如果是容器化部署,apisix-java-plugin-runner 与 APISIX 必须部署在同一个容器中。 ``` ########## File path: docs/zh/Quick Start.md ########## @@ -0,0 +1,110 @@ +### Quick Start + +#### 一、准备工作 Review comment: other headings also need to be changed ########## File path: docs/zh/Quick Start.md ########## @@ -0,0 +1,110 @@ +### Quick Start + +#### 一、准备工作 + +* JDK 8 + +* Clone the [apisix-java-plugin-runner](https://github.com/apache/apisix-java-plugin-runner) project. + +#### 二、开发扩展插件过滤器 + +在`runner-plugin` 模块 `org.apache.apisix.plugin.runner.filter` 包下编写过滤器处理请求,过滤器要实现`PluginFilter` 接口,可以参考 `apisix-runner-sample` 模块下的样例,官方提供了两个样例还是很全面的,一个是请求重写[RewriteRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/RewriteRequestDemoFilter.java),一个是请求拦截[StopRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/StopRequestDemoFilter.java)。 + +```java +@Component +public class CheckTokenFilter implements PluginFilter { + @Override + public String name() { + return "CheckTokenFilter"; + } + + @Override + public Mono<Void> filter(HttpRequest request, HttpResponse response, PluginFilterChain chain) { + /* + * todo your business here + */ + + + return chain.filter(request, response); + } +} +``` + +#### 三、部署 + +插件写好后怎么部署是关键,apisix-java-plugin-runner 与 APISIX 用 Unix Domain Socket 进行进程内通讯, +所以他们要部署在一个服务实例,并且APISIX启动的过程中会带着apisix-java-plugin-runner一起启动,如果是容器化部署就必须在一个容器里运行。 + +所以如果是容器部署就需要把apisix-java-plugin-runner 与 APISIX 生成在一个docker image里。 + +先打包`apisix-java-plugin-runner` + +```bash +mvn package +``` + +打包完成,你会在`dist`目录看见打包文件 + +``` +apache-apisix-java-plugin-runner-0.1.0-bin.tar.gz +``` + +在`dist`目录添加`dockerfile`文件 + +```dockerfile +FROM apache/apisix:2.10.0-alpine + +RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories && apk add --no-cache openjdk8-jre + +ADD aapache-apisix-java-plugin-runner-0.1.0-bin.tar.gz /usr/local/ + +``` + +然后运行`docker build`构建镜像 + +```shell + cd dist + docker build -t apache/apisix:2.10.0-alpine-with-java-plugin . +``` + +最后添加扩展插件配置到APISIX的 `config.yaml` 文件 Review comment: ```suggestion 最后在 APISIX 的 `config.yaml` 文件中增加配置,如下 ``` ########## File path: docs/zh/Quick Start.md ########## @@ -0,0 +1,110 @@ +### Quick Start + +#### 一、准备工作 + +* JDK 8 + +* Clone the [apisix-java-plugin-runner](https://github.com/apache/apisix-java-plugin-runner) project. + +#### 二、开发扩展插件过滤器 + +在`runner-plugin` 模块 `org.apache.apisix.plugin.runner.filter` 包下编写过滤器处理请求,过滤器要实现`PluginFilter` 接口,可以参考 `apisix-runner-sample` 模块下的样例,官方提供了两个样例还是很全面的,一个是请求重写[RewriteRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/RewriteRequestDemoFilter.java),一个是请求拦截[StopRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/StopRequestDemoFilter.java)。 + +```java +@Component +public class CheckTokenFilter implements PluginFilter { + @Override + public String name() { + return "CheckTokenFilter"; + } + + @Override + public Mono<Void> filter(HttpRequest request, HttpResponse response, PluginFilterChain chain) { + /* + * todo your business here + */ + + + return chain.filter(request, response); + } +} +``` + +#### 三、部署 + +插件写好后怎么部署是关键,apisix-java-plugin-runner 与 APISIX 用 Unix Domain Socket 进行进程内通讯, +所以他们要部署在一个服务实例,并且APISIX启动的过程中会带着apisix-java-plugin-runner一起启动,如果是容器化部署就必须在一个容器里运行。 + +所以如果是容器部署就需要把apisix-java-plugin-runner 与 APISIX 生成在一个docker image里。 + +先打包`apisix-java-plugin-runner` + +```bash +mvn package Review comment: ```suggestion ./mvnw package ``` ########## File path: docs/zh/Quick Start.md ########## @@ -0,0 +1,110 @@ +### Quick Start + +#### 一、准备工作 + +* JDK 8 + +* Clone the [apisix-java-plugin-runner](https://github.com/apache/apisix-java-plugin-runner) project. + +#### 二、开发扩展插件过滤器 + +在`runner-plugin` 模块 `org.apache.apisix.plugin.runner.filter` 包下编写过滤器处理请求,过滤器要实现`PluginFilter` 接口,可以参考 `apisix-runner-sample` 模块下的样例,官方提供了两个样例还是很全面的,一个是请求重写[RewriteRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/RewriteRequestDemoFilter.java),一个是请求拦截[StopRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/StopRequestDemoFilter.java)。 + +```java +@Component +public class CheckTokenFilter implements PluginFilter { + @Override + public String name() { + return "CheckTokenFilter"; + } + + @Override + public Mono<Void> filter(HttpRequest request, HttpResponse response, PluginFilterChain chain) { + /* + * todo your business here + */ + + + return chain.filter(request, response); + } +} +``` + +#### 三、部署 + +插件写好后怎么部署是关键,apisix-java-plugin-runner 与 APISIX 用 Unix Domain Socket 进行进程内通讯, +所以他们要部署在一个服务实例,并且APISIX启动的过程中会带着apisix-java-plugin-runner一起启动,如果是容器化部署就必须在一个容器里运行。 + +所以如果是容器部署就需要把apisix-java-plugin-runner 与 APISIX 生成在一个docker image里。 + +先打包`apisix-java-plugin-runner` + +```bash +mvn package +``` + +打包完成,你会在`dist`目录看见打包文件 + +``` +apache-apisix-java-plugin-runner-0.1.0-bin.tar.gz +``` + +在`dist`目录添加`dockerfile`文件 + +```dockerfile +FROM apache/apisix:2.10.0-alpine + +RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories && apk add --no-cache openjdk8-jre + +ADD aapache-apisix-java-plugin-runner-0.1.0-bin.tar.gz /usr/local/ + +``` + +然后运行`docker build`构建镜像 Review comment: ```suggestion 然后构建容器镜像 ``` ########## File path: docs/zh/Quick Start.md ########## @@ -0,0 +1,110 @@ +### Quick Start + +#### 一、准备工作 + +* JDK 8 + +* Clone the [apisix-java-plugin-runner](https://github.com/apache/apisix-java-plugin-runner) project. + +#### 二、开发扩展插件过滤器 + +在`runner-plugin` 模块 `org.apache.apisix.plugin.runner.filter` 包下编写过滤器处理请求,过滤器要实现`PluginFilter` 接口,可以参考 `apisix-runner-sample` 模块下的样例,官方提供了两个样例还是很全面的,一个是请求重写[RewriteRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/RewriteRequestDemoFilter.java),一个是请求拦截[StopRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/StopRequestDemoFilter.java)。 + +```java +@Component +public class CheckTokenFilter implements PluginFilter { + @Override + public String name() { + return "CheckTokenFilter"; + } + + @Override + public Mono<Void> filter(HttpRequest request, HttpResponse response, PluginFilterChain chain) { + /* + * todo your business here + */ + + + return chain.filter(request, response); + } +} +``` + +#### 三、部署 + +插件写好后怎么部署是关键,apisix-java-plugin-runner 与 APISIX 用 Unix Domain Socket 进行进程内通讯, +所以他们要部署在一个服务实例,并且APISIX启动的过程中会带着apisix-java-plugin-runner一起启动,如果是容器化部署就必须在一个容器里运行。 + +所以如果是容器部署就需要把apisix-java-plugin-runner 与 APISIX 生成在一个docker image里。 Review comment: ```suggestion 下面展示如何构建包含 apisix-java-plugin-runner 与 APISIX 的容器镜像。 ``` ########## File path: docs/zh/Quick Start.md ########## @@ -0,0 +1,110 @@ +### Quick Start + +#### 一、准备工作 + +* JDK 8 + +* Clone the [apisix-java-plugin-runner](https://github.com/apache/apisix-java-plugin-runner) project. Review comment: we should follow https://github.com/apache/apisix-java-plugin-runner/blob/main/docs/en/latest/development.md#prerequisites ########## File path: docs/zh/Quick Start.md ########## @@ -0,0 +1,110 @@ +### Quick Start + +#### 一、准备工作 + +* JDK 8 + +* Clone the [apisix-java-plugin-runner](https://github.com/apache/apisix-java-plugin-runner) project. + +#### 二、开发扩展插件过滤器 + +在`runner-plugin` 模块 `org.apache.apisix.plugin.runner.filter` 包下编写过滤器处理请求,过滤器要实现`PluginFilter` 接口,可以参考 `apisix-runner-sample` 模块下的样例,官方提供了两个样例还是很全面的,一个是请求重写[RewriteRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/RewriteRequestDemoFilter.java),一个是请求拦截[StopRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/StopRequestDemoFilter.java)。 + +```java +@Component +public class CheckTokenFilter implements PluginFilter { + @Override + public String name() { + return "CheckTokenFilter"; + } + + @Override + public Mono<Void> filter(HttpRequest request, HttpResponse response, PluginFilterChain chain) { + /* + * todo your business here + */ + + + return chain.filter(request, response); + } +} +``` + +#### 三、部署 + +插件写好后怎么部署是关键,apisix-java-plugin-runner 与 APISIX 用 Unix Domain Socket 进行进程内通讯, +所以他们要部署在一个服务实例,并且APISIX启动的过程中会带着apisix-java-plugin-runner一起启动,如果是容器化部署就必须在一个容器里运行。 + +所以如果是容器部署就需要把apisix-java-plugin-runner 与 APISIX 生成在一个docker image里。 + +先打包`apisix-java-plugin-runner` + +```bash +mvn package +``` + +打包完成,你会在`dist`目录看见打包文件 + +``` +apache-apisix-java-plugin-runner-0.1.0-bin.tar.gz +``` + +在`dist`目录添加`dockerfile`文件 + +```dockerfile +FROM apache/apisix:2.10.0-alpine + +RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories && apk add --no-cache openjdk8-jre + +ADD aapache-apisix-java-plugin-runner-0.1.0-bin.tar.gz /usr/local/ + +``` + +然后运行`docker build`构建镜像 + +```shell + cd dist + docker build -t apache/apisix:2.10.0-alpine-with-java-plugin . +``` + +最后添加扩展插件配置到APISIX的 `config.yaml` 文件 + +```yaml +ext-plugin: + cmd: ['java', '-jar', '-Xmx4g', '-Xms4g', '/path/to/apisix-runner-bin/apisix-java-plugin-runner.jar'] +``` + +这样直接用新生成`apache/apisix:2.10.0-alpine-with-java-plugin` docker image替换原来的`apache/apisix:2.10.0-alpine` 部署就可以了。 Review comment: ```suggestion 构建完成的 `apache/apisix:2.10.0-alpine-with-java-plugin` 镜像内即包含 APISIX 与 apisix-java-plugun-runner。 ``` ########## File path: docs/zh/Quick Start.md ########## @@ -0,0 +1,110 @@ +### Quick Start Review comment: ```suggestion ## 快速开始 ``` ########## File path: docs/zh/Quick Start.md ########## @@ -0,0 +1,110 @@ +### Quick Start + +#### 一、准备工作 + +* JDK 8 + +* Clone the [apisix-java-plugin-runner](https://github.com/apache/apisix-java-plugin-runner) project. + +#### 二、开发扩展插件过滤器 + +在`runner-plugin` 模块 `org.apache.apisix.plugin.runner.filter` 包下编写过滤器处理请求,过滤器要实现`PluginFilter` 接口,可以参考 `apisix-runner-sample` 模块下的样例,官方提供了两个样例还是很全面的,一个是请求重写[RewriteRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/RewriteRequestDemoFilter.java),一个是请求拦截[StopRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/StopRequestDemoFilter.java)。 Review comment: we can add link for `org.apache.apisix.plugin.runner.filter` ########## File path: docs/zh/Quick Start.md ########## @@ -0,0 +1,110 @@ +### Quick Start + +#### 一、准备工作 + +* JDK 8 + +* Clone the [apisix-java-plugin-runner](https://github.com/apache/apisix-java-plugin-runner) project. + +#### 二、开发扩展插件过滤器 + +在`runner-plugin` 模块 `org.apache.apisix.plugin.runner.filter` 包下编写过滤器处理请求,过滤器要实现`PluginFilter` 接口,可以参考 `apisix-runner-sample` 模块下的样例,官方提供了两个样例还是很全面的,一个是请求重写[RewriteRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/RewriteRequestDemoFilter.java),一个是请求拦截[StopRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/StopRequestDemoFilter.java)。 + +```java +@Component +public class CheckTokenFilter implements PluginFilter { + @Override + public String name() { + return "CheckTokenFilter"; + } + + @Override + public Mono<Void> filter(HttpRequest request, HttpResponse response, PluginFilterChain chain) { + /* + * todo your business here + */ + + + return chain.filter(request, response); + } +} +``` + +#### 三、部署 + +插件写好后怎么部署是关键,apisix-java-plugin-runner 与 APISIX 用 Unix Domain Socket 进行进程内通讯, +所以他们要部署在一个服务实例,并且APISIX启动的过程中会带着apisix-java-plugin-runner一起启动,如果是容器化部署就必须在一个容器里运行。 + +所以如果是容器部署就需要把apisix-java-plugin-runner 与 APISIX 生成在一个docker image里。 + +先打包`apisix-java-plugin-runner` Review comment: In this document, we need to unify `apisix-java-plugin-runner` or apisix-java-plugin-runner, choose one. ########## File path: docs/zh/Quick Start.md ########## @@ -0,0 +1,110 @@ +### Quick Start + +#### 一、准备工作 + +* JDK 8 + +* Clone the [apisix-java-plugin-runner](https://github.com/apache/apisix-java-plugin-runner) project. + +#### 二、开发扩展插件过滤器 + +在`runner-plugin` 模块 `org.apache.apisix.plugin.runner.filter` 包下编写过滤器处理请求,过滤器要实现`PluginFilter` 接口,可以参考 `apisix-runner-sample` 模块下的样例,官方提供了两个样例还是很全面的,一个是请求重写[RewriteRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/RewriteRequestDemoFilter.java),一个是请求拦截[StopRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/StopRequestDemoFilter.java)。 + +```java +@Component +public class CheckTokenFilter implements PluginFilter { + @Override + public String name() { + return "CheckTokenFilter"; + } + + @Override + public Mono<Void> filter(HttpRequest request, HttpResponse response, PluginFilterChain chain) { + /* + * todo your business here + */ + + + return chain.filter(request, response); + } +} +``` + +#### 三、部署 + +插件写好后怎么部署是关键,apisix-java-plugin-runner 与 APISIX 用 Unix Domain Socket 进行进程内通讯, +所以他们要部署在一个服务实例,并且APISIX启动的过程中会带着apisix-java-plugin-runner一起启动,如果是容器化部署就必须在一个容器里运行。 + +所以如果是容器部署就需要把apisix-java-plugin-runner 与 APISIX 生成在一个docker image里。 + +先打包`apisix-java-plugin-runner` + +```bash +mvn package +``` + +打包完成,你会在`dist`目录看见打包文件 + +``` +apache-apisix-java-plugin-runner-0.1.0-bin.tar.gz +``` + +在`dist`目录添加`dockerfile`文件 Review comment: ```suggestion 在 `dist` 目录添加 `Dockerfile` 文件 ``` ########## File path: docs/zh/Quick Start.md ########## @@ -0,0 +1,110 @@ +### Quick Start + +#### 一、准备工作 + +* JDK 8 + +* Clone the [apisix-java-plugin-runner](https://github.com/apache/apisix-java-plugin-runner) project. + +#### 二、开发扩展插件过滤器 + +在`runner-plugin` 模块 `org.apache.apisix.plugin.runner.filter` 包下编写过滤器处理请求,过滤器要实现`PluginFilter` 接口,可以参考 `apisix-runner-sample` 模块下的样例,官方提供了两个样例还是很全面的,一个是请求重写[RewriteRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/RewriteRequestDemoFilter.java),一个是请求拦截[StopRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/StopRequestDemoFilter.java)。 Review comment: ```suggestion 在 [runner-plugin](https://github.com/apache/apisix-java-plugin-runner/tree/main/runner-plugin/src/main/java/org/apache/apisix/plugin/runner/filter) 模块的 `org.apache.apisix.plugin.runner.filter` 包下编写过滤器处理请求,过滤器要实现 `PluginFilter` 接口,参考 `apisix-runner-sample` 模块下的样例: - 请求重写[RewriteRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/RewriteRequestDemoFilter.java) -请求拦截[StopRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/StopRequestDemoFilter.java)。 ``` ########## File path: docs/zh/Quick Start.md ########## @@ -0,0 +1,110 @@ +### Quick Start + +#### 一、准备工作 + +* JDK 8 + +* Clone the [apisix-java-plugin-runner](https://github.com/apache/apisix-java-plugin-runner) project. + +#### 二、开发扩展插件过滤器 + +在`runner-plugin` 模块 `org.apache.apisix.plugin.runner.filter` 包下编写过滤器处理请求,过滤器要实现`PluginFilter` 接口,可以参考 `apisix-runner-sample` 模块下的样例,官方提供了两个样例还是很全面的,一个是请求重写[RewriteRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/RewriteRequestDemoFilter.java),一个是请求拦截[StopRequestDemoFilter](https://github.com/apache/apisix-java-plugin-runner/blob/main/sample/src/main/java/org/apache/apisix/plugin/runner/filter/StopRequestDemoFilter.java)。 + +```java +@Component +public class CheckTokenFilter implements PluginFilter { + @Override + public String name() { + return "CheckTokenFilter"; + } + + @Override + public Mono<Void> filter(HttpRequest request, HttpResponse response, PluginFilterChain chain) { + /* + * todo your business here + */ + + + return chain.filter(request, response); + } +} +``` + +#### 三、部署 + +插件写好后怎么部署是关键,apisix-java-plugin-runner 与 APISIX 用 Unix Domain Socket 进行进程内通讯, +所以他们要部署在一个服务实例,并且APISIX启动的过程中会带着apisix-java-plugin-runner一起启动,如果是容器化部署就必须在一个容器里运行。 + +所以如果是容器部署就需要把apisix-java-plugin-runner 与 APISIX 生成在一个docker image里。 + +先打包`apisix-java-plugin-runner` + +```bash +mvn package +``` + +打包完成,你会在`dist`目录看见打包文件 Review comment: ```suggestion 构建完成,你会在 `dist` 目录看见构建产物 ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: notifications-unsubscr...@apisix.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org