版本
3.0.1
创建插件目录和文件
cd ./example/
mkdir -p apisix/plugins
cd apisix/plugins
touch my_plugin.lua
结构如下:
编写脚本
local core = require("apisix.core")local plugin_name = "my_plugin"local schema = {type = "object",properties = {message = { type = "string", default = "Hello from My Plugin" },},required = { "message" },
}local _M = {version = 0.1,priority = 10, -- 优先级,值越大优先级越高, 不能与其他插件重复name = plugin_name,schema = schema,
}function _M.check_schema(conf)return core.schema.check(schema, conf)
endfunction _M.access(conf, ctx)core.log.info("This is a log message from ", plugin_name)-- 你可以在这里进行插件的具体业务逻辑操作core.response.exit(200, conf.message)
endreturn _M
注册插件
要让 APISIX 识别你的插件,需要在 config.yaml 中进行注册。编辑 conf/config.yaml 文件,找到 plugins 部分,
并添加你的插件名称:
apisix:## 添加插件路径extra_lua_path: "/usr/local/apisix/plugins/example/?.lua"
plugins:## 添加插件名称- my_plugin
重启 Apisix
测试
添加路由并指定插件
curl http://127.0.0.1:9180/apisix/admin/routes/1 -X PUT -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -d '
{"uri": "/test","plugins": {"my_plugin": {"message": "Hello, custom plugin!"}},"upstream": {"type": "roundrobin","nodes": {"127.0.0.1:9092": 1}}
}'curl http://127.0.0.1:9080/test你应该会看到 Hello, custom plugin! 作为响应输出。
APISIX Dashboard 加载插件
4. After modifying the plugin schema or creating a custom plugin in Apache APISIX, why can’t I find it on the dashboard?