This documentation explains how to develop this project.
make setup
installation dependenciesmake install
installation runner to systemmake dev
to start it/path/to/apisix-python-plugin-runner/apisix/plugin
the .py
files in this directory autoload
/path/to/apisix-python-plugin-runner/apisix/plugin/stop.py /path/to/apisix-python-plugin-runner/apisix/plugin/rewrite.py
from typing import Any from apisix.runner.http.request import Request from apisix.runner.http.response import Response from apisix.runner.plugin.core import PluginBase class Test(PluginBase): def name(self) -> str: """ The name of the plugin registered in the runner :return: """ return "test" def config(self, conf: Any) -> Any: """ Parse plugin configuration :param conf: :return: """ return conf def filter(self, conf: Any, request: Request, response: Response): """ The plugin executes the main function :param conf: plugin configuration after parsing :param request: request parameters and information :param response: response parameters and information :return: """ # print plugin configuration print(conf) # Fetch request nginx variable `host` host = request.get_var("host") print(host) # Fetch request body body = request.get_body() print(body) # Set response headers response.set_header("X-Resp-A6-Runner", "Python") # Set response body response.set_body("Hello, Python Runner of APISIX") # Set response status code response.set_status_code(201)
PluginBase
class and implement all functions.name
function: used to set the registered plugin name.config
function: used to parse plugin configuration.filter
function: used to filter requests.conf
parameter: plugin configuration after parsing.request
parameter: Request object, which can be used to get and set request information.response
parameter: Response object, which can be used to set response information.Run make test
.
1 byte of type + 3 bytes of length + data