JSON 스키마를 사용할 때 찾을 수있는 점은 유효한 데이터를 설명하는 작업이 혼란 스럽거나 (또는 최소한 구별이 부족한 것 같습니다) 저장된 데이터 및 유효성을 검사하는 입력 데이터. 같은데이터 설명을위한 JSON 스키마 vs 데이터 유효성 확인 v 입력 유효성 확인
전형적인 예를 보이는 :이 데이터 저장소에 유효한 데이터가 유효성을 확인하는, 따라서 같이하고해야하는지 설명하기 위해 잘 작동
var schema = {
type: 'object',
properties: {
id: { type: 'integer', required: true },
name: { type: 'string', required: true },
description: { type: 'string', required: false }
}
};
(후자는 정말 유용-경우하지가에 있어요 이미 유효해야하는 상점) :
var storedData = {
id: 123,
name: 'orange',
description: 'delicious'
};
입력을 유효하게 입력하는 데는 그다지 효과가 없습니다. id
은 응용 프로그램이 생성하고 사용자가 입력의 일부로 제공하지 않을 가능성이 가장 높습니다. 스키마가 직접 입력의 유효성을 검사하는 것은 아닙니다, 유효성 검사 후에 만 발생한다
var inputData = {
name: 'orange',
description: 'delicious'
};
좋아, 하나 말할 수도, : 그것은 스키마 선언 id
이 required
수 없기 때문에 다음 입력 유효성 검사 실패 응용 프로그램은 id
을 추가했으며 데이터는 저장 될 내용입니다.
스키마가 직접 입력의 유효성을 검사하는 것이 아니라면 1) 브라우저에서 실행중인 JavaScript 유효성 검사기의 포인트는 아마도 직접 입력을 먹고 2) 명백하게 입력 지향적 인 readonly
사양의 스키마 기능은 무엇입니까?
한 번만 설정할 수 있지만 업데이트 할 수없는 속성 (사용자 이름 등)은 물론 다른 액세스 수준 (예 : 오렌지색의 관리자 및 소유자가 description
을 변경할 수 있어야합니다. 다른 사용자는 readonly
으로 유지해야합니다.)
이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 아래와 같이 각 유스 케이스별로 다른 스키마가 필요합니까?
var baseSchema = {
type: 'object',
properties: {
id: { type: 'integer', required: true },
name: { type: 'string', required: true },
description: { type: 'string', required: false }
}
};
var ownerUpdateSchema = {
type: 'object',
properties: {
id: { type: 'integer', required: false, readonly: true },
name: { type: 'string', required: true },
description: { type: 'string', required: false }
}
};
var userUpdateSchema = {
type: 'object',
properties: {
id: { type: 'integer', required: false, readonly: true },
name: { type: 'string', required: false, readonly: true },
description: { type: 'string', required: false, readonly: true }
}
};
다른 건요?
"데이터를 설명하는 것"이라면 ID가 필요하다는 것을 지정하는 것이 매우 유용합니다. 귀하의 데이터를 소비하는 경우, 나는이 필드에 의존 할 수 있다는 것을 알고, 그렇지 않으면 식별자로 사용할 다른 것을 찾아야합니다. –