动态配置Map

1.功能描述

该动态模块可以对已经配置的Map映射规则进行更改和动态添加新的http map.

2.依赖模块

njet.conf

load_module /usr/lib/njet/modules/njt_http_dyn_map_module.so; 

3.API

3.1 API 列表

查询接口:

GET  http://IP+port/api/v1/config/http_dyn_map

修改接口:

PUT   http://IP+port//api/v1/config/http_dyn_map

动态添加新的http map

  • api 新增type 字段,有效值:

    del: 删除map。同时判断keyFrom,keyTo 是否相同。静态文件配置的不允许删除

    add:添加新的map。添加时判断是否存在,存在时更新。不存在则添加。存在的判断条件:keyTo是否存在。 其他值:走更新流程。 同时判断keyFrom,keyTo 是否相同。

3.2 调用样例

查询 map

 curl -X 'GET'   'http://192.168.40.158:8088/api/v1/config/http_dyn_map'  |jq
curl -k https://127.0.0.1:18080/?a=aa

curl -k https://127.0.0.1:18080/?a=bb

curl -k https://127.0.0.1:18080/?a=

img img

修改map

添加:

curl -X 'PUT'   'http://127.0.0.1:8089/api/v1/config/http_dyn_map'   -H 'accept: application/json'   -H 'Content-Type: application/json'   -d '{
  "maps": [
    {
      "keyFrom": "$host",
      "keyTo": "$zzz",
      "type":  "add",
      "values": [
        {
          "valueFrom": "/www1",
          "valueTo": "g12"
        },
        {
          "valueFrom": "/www2",
          "valueTo": "g2"
        }
      ],
      "isVolatile": true,
      "hostnames": false
    }
  ]
}'

返回:

[root@k8s-139 2njet]#        curl -X 'GET'   'http://127.0.0.1:8089/api/v1/config/http_dyn_map'   -H 'accept: application/json'    | jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   167  100   167    0     0   3119      0 --:--:-- --:--:-- --:--:--  3150
{
  "maps": [
    {
      "keyFrom": "$host",
      "keyTo": "$zzz",
      "values": [
        {
          "valueFrom": "/www1",
          "valueTo": "g12"
        },
        {
          "valueFrom": "/www2",
          "valueTo": "g2"
        }
      ],
      "isVolatile": true,
      "hostnames": false
    }
  ]
}

删除:

curl -X 'PUT'   'http://127.0.0.1:8089/api/v1/config/http_dyn_map'   -H 'accept: application/json'   -H 'Content-Type: application/json'   -d '{
  "maps": [
    {
      "keyFrom": "$host",
      "keyTo": "$zzz",
      "type" : "del",
      "values": [
        {
          "valueFrom": "/www1",
          "valueTo": "g121111"
        },
        {
          "valueFrom": "/www2",
          "valueTo": "g21111"
        }
      ],
      "isVolatile": true,
      "hostnames": false
    }
  ]
}'

返回:

[root@k8s-139 2njet]#        curl -X 'GET'   'http://127.0.0.1:8089/api/v1/config/http_dyn_map'   -H 'accept: application/json'    | jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    11  100    11    0     0    202      0 --:--:-- --:--:-- --:--:--   203
{
  "maps": []
}

更新:

curl -X 'PUT'   'http://127.0.0.1:8089/api/v1/config/http_dyn_map'   -H 'accept: application/json'   -H 'Content-Type: application/json'   -d '{
  "maps": [
    {
      "keyFrom": "$host",
      "keyTo": "$zzz",
      "values": [
        {
          "valueFrom": "/www1",
          "valueTo": "g121111"
        },
        {
          "valueFrom": "/www2",
          "valueTo": "g21111"
        }
      ],
      "isVolatile": true,
      "hostnames": false
    }
  ]
}'

返回:

[root@k8s-139 2njet]#        curl -X 'GET'   'http://127.0.0.1:8089/api/v1/config/http_dyn_map'   -H 'accept: application/json'    | jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   175  100   175    0     0   3266      0 --:--:-- --:--:-- --:--:--  3301
{
  "maps": [
    {
      "keyFrom": "$host",
      "keyTo": "$zzz",
      "values": [
        {
          "valueFrom": "/www1",
          "valueTo": "g121111"
        },
        {
          "valueFrom": "/www2",
          "valueTo": "g21111"
        }
      ],
      "isVolatile": true,
      "hostnames": false
    }
  ]
}