额外参数

插件信息

插件名称字段插件属性
额外参数extra_params参数处理

功能描述

开启该插件后,不需要用户传某些参数值,网关会在转发时自动带上这些参数,支持header、body、query参数。 额外参数仅支持 表单 类型与 json 类型:

  • formdata的参数值须为string类型,头部补充Conent-Type:x-www-form-urlencoded。
  • 若额外参数是json类型,需在头部补充Content-Type:application/json。
  • 参数类型为表单时支持同名参数。

Open Api

配置示例

示例说明:在转发请求的头部header里加上test:test_value, 若转发header里本身已存在test,且冲突处理方式为conflict,则采用插件内配置的值。

{
    "params":[
        {
            "name":"test",
            "position":"header",
            "value":"test_value",
            "conflict": "convert",
        }
    ],
    "error_type":"text"
}

配置参数说明

参数名说明是否必填默认值取值范围
params额外参数列表array
params -> name参数名string
params -> position参数位置["header","body","query"]
params -> value参数值string
params -> conflict参数冲突时的处理方式convert["origin","convert","error"]
error_type插件返回报错的类型text["text","json"]

参数冲突说明: 额外参数插件配置了参数A的值,但是直接请求时也传了参数A,此时为参数出现冲突,参数A实际上会接收两个参数值。

  • convert:参数出现冲突时,取映射后的参数,即配置的值
  • origin:参数出现冲突时,取映射前的参数,即实际传的值
  • error:请求时报错,”param_name” has a conflict.

请求参数

参数名说明必填值可能性参数位置
Content-Type数据类型x-www-form-urlencoded 或 application/jsonheader

若配置示例里的 test 参数为表单参数,则请求头部填写 Conent-Type:x-www-form-urlencoded。 若配置示例里的 test 参数为Json参数,则请求头部需加 Conent-Type:application/json。

Open API 请求示例

全局配置
curl -X POST  'http://127.0.0.1:9400/api/setting/plugin' \
-H 'Content-Type:application/json' \
-d '{
    "plugins":[{
        "id":"eolinker.com:apinto:extra_params",
        "name":"my_extra_params",
        "status":"enable"
    }]
}'
配置带有额外参数插件的服务

以在请求头部加参数为例,全局插件具体配置点此进行跳转

备注:匿名服务配置的是apinto官方示例接口,将返回请求的相关信息。

curl -X POST  'http://127.0.0.1:9400/api/service' \
-H 'Content-Type:application/json' \
-d '{
    "name": "extra_param_service",
    "driver": "http",
    "timeout": 3000,
    "retry": 3,
    "scheme": "http",
    "nodes": ["demo-apinto.eolink.com:8280"],
    "balance": "round-robin",
    "plugins": {
        "my_extra_params":{
            "disable": false,
            "config":{
                "params": [{
                "name": "demo_param",
                "position": "header",
                "value": "1",
                "conflict": "Convert"
                }],
            "error_type": "text"
            }
        }
    }
}'
绑定路由
curl -X POST  'http://127.0.0.1:9400/api/router' \
-H 'Content-Type:application/json' \
-d '{
    "name":"extra_params_router",
    "driver":"http",
    "listen":8099,
    "rules":[{
        "location":"/demo/extra_params"
    }],
    "target":"extra_param_service@service"
}'
接口请求示例
curl -X GET 'http://127.0.0.1:8099/demo/extra_params'
接口访问返回示例
{
    "body":"",
    "header":{
        "Accept":[
            "*/*"
        ],
        "Demo_param":[
            "1"
        ],
        "User-Agent":[
            "curl/7.75.0"
        ],
        "X-Forwarded-For":[
            "127.0.0.1,127.0.0.1"
        ]
    },
    "host":"127.0.0.1:8099",
    "method":"GET",
    "path":"/demo/extra_params",
    "query":{

    },
    "url":"/demo/extra_params"
}