程式狂想筆記

一個攻城師奮鬥史

0%

postman驗證JSON Schema方法

最近在實作 API,發現上次只有做 VSCODE 檢查
postman 假如可以用的話,也很方便

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var schema = {
"$schema": "http://json-schema.org/draft-06/schema#",
......(略)
}
};

pm.test("Check JSON", function () {
var jsonData = pm.response.json();
var valid = tv4.validate(jsonData, schema, false, true);
if (valid !== true) {
console.log(tv4.error);
tests['tv4.error:' + tv4.error] = true;
}
pm.expect(valid).to.be.true;
});

只要在pre-test放這段就可以檢查了

參考來源:

2018-11-07

最近應為錯誤發現不會提示顯示哪裡錯誤
所以爬到How do I test JSON schema in postman using tv4? - Stack Overflow
修改一下程式碼

1
2
3
4
5
6
7
8
9
10
pm.test("Check JSON", function() {
var jsonData = pm.response.json();
var valid = tv4.validateMultiple(jsonData, schema, false, true);
if (valid.errors) {
valid.errors.forEach(
(value, index) => (tests[value.schemaPath + ":" + value.message] = true)
);
}
pm.expect(valid.errors.length === 0).to.be.true;
});

最後,假如要用上次 VSCODE
setting.json好像沒辦法自動設定所有 json 檔案
只能單一設定

1
2
3
4
5
6
7
8
9
10
11
12
{
"json.schemas": [
{
"fileMatch": ["xxx.api.json"],
"url": "./xxx.schema.json"
},
{
"fileMatch": ["oooo.json"],
"url": "./oooo.schema.json"
}
]
}

未來有找到好方法再補
有找到VSCode 配置文件的变量索引 - 知乎

1
2
3
4
5
6
7
8
9
{
//不能使用
"json.schemas": [
{
"fileMatch": ["${fileBasenameNoExtension}.json"],
"url": "./${fileBasenameNoExtension}.schema.json"
}
]
}

明天測試看能不能用

2018-11-09
確定不能使用

REST Client 好像沒有 JSON Schema 檢查工具

一些 github 上檢驗工具
ebdrup/json-schema-benchmark: Benchmarks for Node.js JSON-schema validators

2019-05-22
另類檢查寫法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var data = JSON.parse(responseBody);

pm.test("response must be valid and have a body", function() {
// assert that the status code is 200
pm.response.to.be.ok;
// assert that the response has a valid JSON body
pm.response.to.be.withBody;
pm.response.to.be.json;
});

pm.test("respnse body has xxxx ?", function() {
pm.expect(data.response.xxxx).is.not.empty;
pm.response.to.not.have.jsonBody("error");
});

參考來源:
Test scripts | Postman Learning Center