1
我用node.js和express.js製作了一個簡單的web api,我想驗證將json數據輸入到我的應用程序的模式。jsonschema with Postman
我有這個非常精確的架構:
var schema = {
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Student",
"description": "Schema for student",
"type": "object",
"properties": {
"first_name": {
"description": "Firts name of the student",
"type": "string"
},
"last_name": {
"description": "Last name of the student",
"type": "string"
}
},
"additionalProperties": false,
"required": ["first_name", "last_name"]
};
我只是想驗證(現在)的名字和姓氏。所以我添加了「additionalProperties」,所以只有名字和姓氏的json纔是有效的。
當我用POSTMAN測試我的應用程序與以下數據時,我收到了很多錯誤。 (應該是有效的)
{"first_name":"Test", "last_name":"Test"}
這應該是無效的:
{"first_name":"Test", "last_name":"Test", "jibber":"ish"}
約700線jsonshema驗證錯誤的控制檯顯示:
{ instance:
{ first_name: 'Test',
last_name: 'Test',
_id: 5451419404e5006c094057c1,
},
schema:
{ '$schema': 'http://json-schema.org/draft-04/schema#',
title: 'Student',
description: 'Schema for student',
type: 'object',
properties: { first_name: [Object], last_name: [Object] },
additionalProperties: false,
required: [ 'first_name', 'first_name' ] },
propertyPath: 'instance',
errors:
[ { property: 'instance',
message: 'Property $__ does not exist in the schema',
schema: [Object],
instance:
{ first_name: 'Test',
last_name: 'Test',
_id: 5451419404e5006c094057c1,
},
stack: 'instance Property $__ does not exist in the schema' },
{ property: 'instance',
message: 'Property isNew does not exist in the schema',
schema: [Object],
instance:
{ first_name: 'Test',
last_name: 'Test',
_id: 5451419404e5006c094057c1,
},
stack: 'instance Property isNew does not exist in the schema' },
那些是一些隱藏的性質郵差使用 ?
作爲一種解決辦法,如果你想允許所有用'$'開始,你可以使用' 「patternProperties」:{ 「^ \ $」:{}}' - 每個屬性開始用'$ '會匹配(但不能有任何限制)。 – cloudfeet 2014-10-29 20:19:49
有很多不以$開頭的屬性,如我的錯誤輸出的最後一行:實例屬性isNew。 – metraon 2014-10-29 23:54:26