request-validation插件
更新时间 2026-04-21 15:48:57
最近更新时间: 2026-04-21 15:48:57
本文将详细介绍request-validation插件功能、配置和使用。
功能说明
request-validation 插件用于提前验证向上游服务转发的请求。该插件使用 JSON Schema 机制进行数据验证,可以验证请求的 body 及 header 数据。
配置字段
| 名称 | 类型 | 填写要求 | 默认值 | 有效值 | 描述 |
|---|---|---|---|---|---|
| header_schema | object | 可选,至少配置 header_schema 和 body_schema 中任意一个,两者也可以同时使用。 | header 数据的 schema 数据结构。 | ||
| body_schema | object | 可选,至少配置 header_schema 和 body_schema 中任意一个,两者也可以同时使用。 | body 数据的 schema 数据结构。 | ||
| rejected_code | integer | 可选 | 400 | [200,...,599] | 当请求被拒绝时要返回的状态码。 |
| rejected_msg | string | 可选 | 当请求被拒绝时返回的信息。 |
配置示例
request-validation 使用示例
body_schema: { \"type\": \"object\", \"required\": [\"required_payload\"], \"properties\": {\"required_payload\": {\"type\": \"string\"},\"boolean_payload\": {\"type\": \"boolean\"} } }
rejected_code: 400
rejected_msg: "customize reject message"请求以下路由
curl -i --header "Content-Type: application/json" \
> --request POST \
> --data '{"boolean-payload":true}' \
> http://example.com/test请求中的body没有 request_payload 字段,请求被拒绝,返回结果为
HTTP/1.1 400 Bad Request
......
customize reject message常见的schema数据结构示例:
枚举(Enum)验证
{
"body_schema": {
"type": "object",
"required": ["enum_payload"],
"properties": {
"enum_payload": {
"type": "string",
"enum": ["enum_string_1", "enum_string_2"],
"default": "enum_string_1"
}
}
}
}布尔(Boolean)验证
{
"body_schema": {
"type": "object",
"required": ["bool_payload"],
"properties": {
"bool_payload": {
"type": "boolean",
"default": true
}
}
}
}数字范围(Number or Integer)验证
{
"body_schema": {
"type": "object",
"required": ["integer_payload"],
"properties": {
"integer_payload": {
"type": "integer",
"minimum": 1,
"maximum": 65535
}
}
}
}字符串长度(String)验证
{
"body_schema": {
"type": "object",
"required": ["string_payload"],
"properties": {
"string_payload": {
"type": "string",
"minLength": 1,
"maxLength": 32
}
}
}
}正则表达式(Regex)验证
{
"body_schema": {
"type": "object",
"required": ["regex_payload"],
"properties": {
"regex_payload": {
"type": "string",
"minLength": 1,
"maxLength": 32,
"pattern": "[[^[a-zA-Z0-9_]+$]]"
}
}
}
}数组(Array)验证
{
"body_schema": {
"type": "object",
"required": ["array_payload"],
"properties": {
"array_payload": {
"type": "array",
"minItems": 1,
"items": {
"type": "integer",
"minimum": 200,
"maximum": 599
},
"uniqueItems": true,
"default": [200, 302]
}
}
}
}多字段组合(Combined)验证
{
"body_schema": {
"type": "object",
"required": ["boolean_payload", "array_payload", "regex_payload"],
"properties": {
"boolean_payload": {
"type": "boolean"
},
"array_payload": {
"type": "array",
"minItems": 1,
"items": {
"type": "integer",
"minimum": 200,
"maximum": 599
},
"uniqueItems": true,
"default": [200, 302]
},
"regex_payload": {
"type": "string",
"minLength": 1,
"maxLength": 32,
"pattern": "[[^[a-zA-Z0-9_]+$]]"
}
}
}
}配置模板
#[必填]header_schema和body_schema至少二选一,可以同时使用
#header数据的schema数据结构
#header_schema:
#body数据的schema数据结构
#body_schema:
#[可选]当请求被拒绝时要返回的状态码。默认值400,有效范围[200,...,599]
#rejected_code: 400
#[可选]当请求被拒绝时返回的信息。有效长度为1-256
#rejected_msg: “The request param validation failed”