2014-10-29 49 views
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' }, 

那些是一些隱藏的性質郵差使用 ?

+0

作爲一種解決辦法,如果你想允許所有用'$'開始,你可以使用' 「patternProperties」:{ 「^ \ $」:{}}' - 每個屬性開始用'$ '會匹配(但不能有任何限制)。 – cloudfeet 2014-10-29 20:19:49

+0

有很多不以$開頭的屬性,如我的錯誤輸出的最後一行:實例屬性isNew。 – metraon 2014-10-29 23:54:26

回答

2

我做了一些測試,我的身體很好。額外的特性是由貓鼬把我的身體鑄造成貓鼬物體產生的。

驗證必須僅驗證頁面主體,否則將失敗。

Wisdom of the ancients