Request Protocol Validation
Function Description
The request-validation
plugin is used to validate requests forwarded to upstream services in advance. This plugin utilizes the JSON Schema
mechanism for data validation, capable of validating both the body and header data of requests.
Execution Attributes
Plugin Execution Phase: Authentication Phase
Plugin Execution Priority: 220
Configuration Fields
Name | Data Type | Requirements | Default Value | Description |
---|---|---|---|---|
header_schema | object | Optional | - | Configuration for JSON Schema to validate request headers |
body_schema | object | Optional | - | Configuration for JSON Schema to validate request body |
rejected_code | number | Optional | 403 | HTTP status code returned when the request is rejected |
rejected_msg | string | Optional | - | HTTP response body returned when the request is rejected |
enable_swagger | bool | Optional | false | Configuration to enable Swagger documentation validation |
enable_oas3 | bool | Optional | false | Configuration to enable OAS3 documentation validation |
Validation rules for header and body are the same, below is an example using body.
Configuration Examples
Enumeration (Enum) Validation
body_schema: type: object required: - enum_payload properties: enum_payload: type: string enum: - "enum_string_1" - "enum_string_2" default: "enum_string_1"
Boolean Validation
body_schema: type: object required: - boolean_payload properties: boolean_payload: type: boolean default: true
Number Range (Number or Integer) Validation
body_schema: type: object required: - integer_payload properties: integer_payload: type: integer minimum: 1 maximum: 10
String Length Validation
body_schema: type: object required: - string_payload properties: string_payload: type: string minLength: 1 maxLength: 10
Regular Expression (Regex) Validation
body_schema: type: object required: - regex_payload properties: regex_payload: type: string minLength: 1 maxLength: 10 pattern: "^[a-zA-Z0-9_]+$"
Array Validation
body_schema: type: object required: - array_payload properties: array_payload: type: array minItems: 1 items: type: integer minimum: 1 maximum: 10 uniqueItems: true default: [1, 2, 3]
Combined Validation
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: 1 maximum: 10 uniqueItems: true default: [1, 2, 3] regex_payload: type: string minLength: 1 maxLength: 10 pattern: "^[a-zA-Z0-9_]+$"
Custom Rejection Message
body_schema: type: object required: - boolean_payload properties: boolean_payload: type: booleanrejected_code: 403rejected_msg: "Request rejected"