Developer Guide
#
OverviewThis documentation explains how to develop this project.
#
Prerequisites- Python 3.6+
- APISIX 2.7.0
#
Debug- Run
make setup
Installation dependencies - Run
make dev
to start it
#
Plugin#
Plugin directory/path/to/apisix-python-plugin-runner/apisix/plugin
the .py
files in this directory autoload
#
Plugin example/path/to/apisix-python-plugin-runner/apisix/plugin/say.py
#
Plugin Formatfrom apisix.runner.plugin.base import Base
from apisix.runner.http.request import Request
from apisix.runner.http.response import Response
class Test(Base):
def __init__(self):
super(Test, self).__init__(self.__class__.__name__)
def filter(self, request: Request, response: Response):
"""
The plugin executes the main function
:param request:
request parameters and information
:param response:
response parameters and information
:return:
"""
# Get plugin configuration information through `self.config`
# print(self.config)
# Set response headers
headers = request.headers
headers["X-Resp-A6-Runner"] = "Python"
response.headers = headers
# Set response body
response.body = "Hello, Python Runner of APISIX"
# Set response status code
response.status_code = 201
# Set the plug-in to `stop` type, default `rewrite`, use `self.rewrite()` to declare it as `rewrite` type.
self.stop()
- The plugin must inherit the
Base
class - The plugin must implement the
filter
function filter
function parameters can only containRequest
andResponse
classes as parameters- Request parameter can get request information
- Response parameter can set response information
self.config
can get plug-in configuration information- Use
self.stop()
to set the plugin as astop
type plugin, which will interrupt the request. - Use
self.rewrite()
to set the plugin as arewrite
type plugin, which will not interrupt the request.
#
TestRun make test
.
#
Data Format#
Data Protocol1 byte of type + 3 bytes of length + data