mirror of
https://gitee.com/iresty/apisix.git
synced 2024-12-03 04:27:36 +08:00
docs: plugin-develop.md adds ctx and conf descriptions (#3650)
This commit is contained in:
parent
2a6e2b4247
commit
e146893bff
@ -295,7 +295,65 @@ end
|
|||||||
|
|
||||||
## implement the logic
|
## implement the logic
|
||||||
|
|
||||||
Write the logic of the plugin in the corresponding phase.
|
Write the logic of the plugin in the corresponding phase. There are two parameters `conf` and `ctx` in the phase method, take the `limit-conn` plugin configuration as an example.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
|
||||||
|
{
|
||||||
|
"methods": ["GET"],
|
||||||
|
"uri": "/index.html",
|
||||||
|
"id": 1,
|
||||||
|
"plugins": {
|
||||||
|
"limit-conn": {
|
||||||
|
"conn": 1,
|
||||||
|
"burst": 0,
|
||||||
|
"default_conn_delay": 0.1,
|
||||||
|
"rejected_code": 503,
|
||||||
|
"key": "remote_addr"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"39.97.63.215:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
|
||||||
|
### conf parameter
|
||||||
|
|
||||||
|
The `conf` parameter is the relevant configuration information of the plugin, you can use `core.log.warn(core.json.encode(conf))` to output it to `error.log` for viewing, as shown below:
|
||||||
|
|
||||||
|
```lua
|
||||||
|
function _M.access(conf, ctx)
|
||||||
|
core.log.warn(core.json.encode(conf))
|
||||||
|
......
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
conf:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"rejected_code":503,
|
||||||
|
"burst":0,
|
||||||
|
"default_conn_delay":0.1,
|
||||||
|
"conn":1,
|
||||||
|
"key":"remote_addr"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### ctx parameter
|
||||||
|
|
||||||
|
The `ctx` parameter caches data information related to the request. You can use `core.log.warn(core.json.encode(ctx, true))` to output it to `error.log` for viewing, as shown below :
|
||||||
|
|
||||||
|
```lua
|
||||||
|
function _M.access(conf, ctx)
|
||||||
|
core.log.warn(core.json.encode(ctx, true))
|
||||||
|
......
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
## write test case
|
## write test case
|
||||||
|
|
||||||
|
@ -234,7 +234,65 @@ end
|
|||||||
|
|
||||||
## 编写执行逻辑
|
## 编写执行逻辑
|
||||||
|
|
||||||
在对应的阶段方法里编写功能的逻辑代码。
|
在对应的阶段方法里编写功能的逻辑代码,在阶段方法中具有 `conf` 和 `ctx` 两个参数,以 `limit-conn` 插件配置为例。
|
||||||
|
|
||||||
|
```shell
|
||||||
|
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
|
||||||
|
{
|
||||||
|
"methods": ["GET"],
|
||||||
|
"uri": "/index.html",
|
||||||
|
"id": 1,
|
||||||
|
"plugins": {
|
||||||
|
"limit-conn": {
|
||||||
|
"conn": 1,
|
||||||
|
"burst": 0,
|
||||||
|
"default_conn_delay": 0.1,
|
||||||
|
"rejected_code": 503,
|
||||||
|
"key": "remote_addr"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"39.97.63.215:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
|
||||||
|
### conf 参数
|
||||||
|
|
||||||
|
`conf` 参数是插件的相关配置信息,您可以通过 `core.log.warn(core.json.encode(conf))` 将其输出到 `error.log` 中进行查看,如下所示:
|
||||||
|
|
||||||
|
```lua
|
||||||
|
function _M.access(conf, ctx)
|
||||||
|
core.log.warn(core.json.encode(conf))
|
||||||
|
......
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
conf:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"rejected_code":503,
|
||||||
|
"burst":0,
|
||||||
|
"default_conn_delay":0.1,
|
||||||
|
"conn":1,
|
||||||
|
"key":"remote_addr"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### ctx 参数
|
||||||
|
|
||||||
|
`ctx` 参数缓存了请求相关的数据信息,您可以通过 `core.log.warn(core.json.encode(ctx, true))` 将其输出到 `error.log` 中进行查看,如下所示:
|
||||||
|
|
||||||
|
```lua
|
||||||
|
function _M.access(conf, ctx)
|
||||||
|
core.log.warn(core.json.encode(ctx, true))
|
||||||
|
......
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
## 编写测试用例
|
## 编写测试用例
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user