title: Developer Guide


This documentation explains how to develop this project.


  • Python 3.7+
  • APISIX 2.7.0+


  • Run make setup installation dependencies
  • Run make install installation runner to system
  • Run make dev to start it


Plugin directory


the .py files in this directory autoload

Plugin example


Plugin Format

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 "test"

    def config(self, conf: Any) -> Any:
        Parse plugin configuration
        :param conf:
        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

        # print plugin configuration

        # Fetch request nginx variable `host`
        host = request.get_var("host")

        # Fetch request body
        body = request.get_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
  • Plugins must inherit the 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.

Data Format


Data Protocol

1 byte of type + 3 bytes of length + data