Files
higress/plugins/wasm-go/extensions/request-validation

title, keywords, description
title keywords description
Request Protocol Validation
higress
request validation
Configuration reference for request protocol validation plugin

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: boolean
rejected_code: 403
rejected_msg: "Request rejected"