You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by me...@apache.org on 2020/07/30 09:46:52 UTC

[incubator-apisix] branch master updated: doc: add `request-validation` plugin chinese document. (#1932)

This is an automated email from the ASF dual-hosted git repository.

membphis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-apisix.git


The following commit(s) were added to refs/heads/master by this push:
     new 0062877  doc: add `request-validation` plugin chinese document. (#1932)
0062877 is described below

commit 0062877dcc08a98a3e73baa1adff762760f8306a
Author: Janko <sh...@gmail.com>
AuthorDate: Thu Jul 30 17:46:44 2020 +0800

    doc: add `request-validation` plugin chinese document. (#1932)
    
    FIX #1882
---
 doc/plugins/request-validation.md       |   2 +-
 doc/zh-cn/plugins/request-validation.md | 255 ++++++++++++++++++++++++++++++++
 2 files changed, 256 insertions(+), 1 deletion(-)

diff --git a/doc/plugins/request-validation.md b/doc/plugins/request-validation.md
index 7c29e87..e402fb2 100644
--- a/doc/plugins/request-validation.md
+++ b/doc/plugins/request-validation.md
@@ -17,7 +17,7 @@
 #
 -->
 
-[Chinese](request-validation-cn.md)
+[Chinese](../zh-cn/plugins/request-validation.md)
 
 # Summary
 - [**Name**](#name)
diff --git a/doc/zh-cn/plugins/request-validation.md b/doc/zh-cn/plugins/request-validation.md
new file mode 100644
index 0000000..9882495
--- /dev/null
+++ b/doc/zh-cn/plugins/request-validation.md
@@ -0,0 +1,255 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+[English](../../plugins/request-validation.md)
+
+# 目录
+- [**名字**](#名字)
+- [**属性**](#属性)
+- [**如何启用**](#如何启用)
+- [**测试插件**](#测试插件)
+- [**禁用插件**](#禁用插件)
+- [**示例**](#示例)
+
+## 名字
+
+`request-validation` 插件用于提前验证请求向上游转发请求,可以验证请求的 `body` 及 `header` 数据。
+
+该插件使用 `Json Schema` 进行数据验证,有关 `Json Schema` 的更多信息,请参阅 [JSON schema](https://github.com/api7/jsonschema)。
+
+
+## 属性
+
+|名称           |必选项          |描述|
+|---------      |--------       |-----------|
+| header_schema |可选           |`header` 数据的 `schema` 数据结构|
+| body_schema   |可选           |`body` 数据的 `schema` 数据结构|
+
+
+## 如何启用
+
+创建一条路由并在该路由上启用 `request-validation` 插件:
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/routes/5 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
+{
+    "uri": "/get",
+    "plugins": {
+        "request-validation": {
+            "body_schema": {
+                "type": "object",
+                "required": ["required_payload"],
+                "properties": {
+                    "required_payload": {"type": "string"},
+                    "boolean_payload": {"type": "boolean"}
+                }
+            }
+        }
+    },
+    "upstream": {
+    	"type": "roundrobin",
+    	"nodes": {
+        	"127.0.0.1:8080": 1
+    	}
+    }
+}
+```
+
+
+## 测试插件
+
+```shell
+curl --header "Content-Type: application/json" \
+  --request POST \
+  --data '{"boolean-payload":true,"required_payload":"hello"}' \
+  http://127.0.0.1:9080/get
+```
+
+如果 `Schema` 验证失败,将返回 `400 bad request` 错误。
+
+
+## 禁用插件
+
+在路由 `plugins` 配置块中删除 `request-validation` 配置,即可禁用该插件。
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/routes/5 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
+{
+    "uri": "/get",
+    "plugins": {
+    },
+    "upstream": {
+    	"type": "roundrobin",
+    	"nodes": {
+        	"127.0.0.1:8080": 1
+    	}
+    }
+}
+```
+
+
+## 示例
+
+**枚举(Enums)验证:**
+
+```shell
+{
+    "body_schema": {
+        "type": "object",
+        "required": ["emum_payload"],
+        "properties": {
+            "emum_payload": {
+                "type": "string",
+                enum: ["enum_string_1", "enum_string_2"]
+                default = "enum_string_1"
+            }
+        }
+    }
+}
+```
+
+**布尔(Boolean)验证:**
+
+```shell
+{
+    "body_schema": {
+        "type": "object",
+        "required": ["bool_payload"],
+        "properties": {
+            "bool_payload": {
+                type = "boolean",
+                default = true
+            }
+        }
+    }
+}
+```
+
+**数字范围(Number or Integer)验证:**
+
+```shell
+{
+    "body_schema": {
+        "type": "object",
+        "required": ["integer_payload"],
+        "properties": {
+            "integer_payload": {
+                type = "integer",
+                minimum = 1,
+                maximum = 65535
+            }
+        }
+    }
+}
+```
+
+**字符串长度(String)验证:**
+
+```shell
+{
+    "body_schema": {
+        "type": "object",
+        "required": ["string_payload"],
+        "properties": {
+            "string_payload": {
+                type = "string",
+                minLength = 1,
+                maxLength = 32
+            }
+        }
+    }
+}
+```
+
+**正则表达式(Regex)验证:**
+
+```shell
+{
+    "body_schema": {
+        "type": "object",
+        "required": ["regex_payload"],
+        "properties": {
+            "regex_payload": {
+                type = "string",
+                minLength = 1,
+                maxLength = 32,
+                pattern = [[^[a-zA-Z0-9_]+$]]
+            }
+        }
+    }
+}
+```
+
+
+**数组(Array)验证:**
+
+```shell
+{
+    "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}
+            }
+        }
+    }
+}
+```
+
+**多字段组合(Multiple Fields)验证:**
+
+```shell
+{
+    "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_]+$]]
+            }
+        }
+    }
+}
+```