Browse Source

添加yaml checker README

yjp 1 year ago
parent
commit
232f3d80c5
1 changed files with 139 additions and 0 deletions
  1. 139 0
      yaml_checker/README.md

+ 139 - 0
yaml_checker/README.md

@@ -0,0 +1,139 @@
+# yaml_checker
+
+## 一、校验原理说明
+
+涉及两种类型的YAML文件:schema文件和被校验文件,校验器的原理就是通过schema定义YAML文件的结构,利用schema定义检查被校验文件的有效性。
+
+schema文件必须是schema为根节点的YAML文件,schema节点类型有object和field两种,如果需要将定义的object或者field类型节点升级为数组,只需要as_array字段为true即可。
+
+object类型的节点属性:
+
+```yaml
+type: object # 必须为object
+name: # 必传,yaml对象的名称
+describe: # 必传,yaml对象的描述
+required: # 非必传,该字段在被检测文件中是否是必传字段,默认为false
+as_array: # 非必传,是否升级为数组类型,默认为false
+fields: # 子字段定义,可以是object或者field类型的节点定义
+```
+
+field类型的节点属性:
+
+```yaml
+type: field # 必须为field
+name: # 必传,yaml对象的名称
+describe: # 必传,yaml对象的描述
+required: # 非必传,该字段在被检测文件中是否是必传字段,默认为false
+as_array: # 非必传,是否升级为数组类型,默认为false
+field_type: # 字段类型,可以是string,int,bool
+```
+
+给出一个较完整的示例:
+
+```yaml
+schema:
+  - type: field
+    name: test_field_array
+    describe: 测试field数组(必传)
+    required: true
+    as_array: true
+    field_type: string
+  - type: field
+    name: test_field
+    describe: 测试field(必传)
+    required: true
+    field_type: string
+  - type: object
+    name: test_obj_array
+    describe: 测试对象(必传)
+    required: true
+    as_array: true
+    fields:
+      - type: field
+        name: field
+        describe: 测试对象字段类型字段(非必传)
+        required: false
+        field_type: string
+  - type: object
+    name: test_obj
+    describe: 测试对象(必传)
+    required: true
+    fields:
+      - type: field
+        name: field_array
+        describe: 测试对象字段类型数组字段(必传)
+        required: true
+        as_array: true
+        field_type: string
+      - type: field
+        name: field
+        describe: 测试对象字段类型字段(非必传)
+        required: false
+        field_type: string
+      - type: object
+        name: obj_array
+        describe: 测试对象包含对象数组(必传)
+        required: true
+        as_array: true
+        fields:
+          - type: field
+            name: obj_array_field1
+            describe: 对象数组字段1(必传)
+            required: true
+            field_type: string
+          - type: field
+            name: obj_array_field2
+            describe: 对象数组字段2(非必传)
+            required: false
+            field_type: string
+```
+
+一个有效的YAML文件,如下所示:
+
+```yaml
+test_field_array:
+  - aaa
+  - bbb
+  - ccc
+test_field: ddd
+test_obj_array:
+  - field: aaa
+test_obj:
+  field_array:
+    - aaa
+    - bbb
+  field: ccc
+  obj_array:
+    - obj_array_field1: aaa
+    - obj_array_field1: bbb
+      obj_array_field2: ccc
+```
+
+## 二、包使用说明
+
+首先导入包
+
+```go
+import "git.sxidc.com/go-tools/yaml_checker"
+```
+
+
+
+```go
+schemaDoc, err := NewSchemaDoc("schema.yaml")
+if err != nil {
+    t.Fatal(err)
+}
+
+err = schemaDoc.ValidateFile("test.yaml")
+if err != nil {
+    t.Fatal(err)
+}
+
+/*
+err = schemaDoc.ValidateMap(yamlMap)
+if err != nil {
+    t.Fatal(err)
+}
+*/
+```