Draft-07 發行說明
對於 Core 和 Validation 規格,draft-07 是一個相對較小的更新。在驗證關鍵字和結果方面,它與 draft-06 完全向後相容。
有些差異存在於從 Hyper-Schema 移過來的關鍵字,以及建議將實例和 Schema 連結在一起的方式。最後,收集註解關鍵字值的過程比以前更清楚地定義了。
關鍵字
- 沒有關鍵字變更行為
- 沒有關鍵字被移除
- 一些關鍵字從 Hyper-Schema 中移出,其中兩個被重新命名
關鍵字 | 變更 | 備註 |
---|---|---|
["$comment" ](../../draft-07/json-schema-core.html#rfc.section.9) | 新增至 Core | 適用於 Schema 維護者的註解,而不是 ["description" ](../../draft-07/json-schema-validation.html#rfc.section.10.1),後者適合向終端使用者顯示 |
["if" 、"then" 、"else" ](../../draft-07/json-schema-validation.html#rfc.section.6.6) | 新增至 Validation | 明確的條件式 Schema 評估 |
["readOnly" ](../../draft-07/json-schema-validation.html#rfc.section.10.3) | 從 Hyper-Schema 移至 Validation | 不限於超媒體環境 |
["writeOnly" ](../../draft-07/json-schema-validation.html#rfc.section.10.3) | 新增至 Validation | 一般唯寫欄位,包括但不限於密碼 |
["contentMediaType" ](../../draft-07/json-schema-validation.html#rfc.section.8) | 從 Hyper-Schema 移至 Validation | 先前為 ["media": {"type": "..."} ](../../draft-06/json-schema-hypermedia.html#rfc.section.5.3) |
["contentEncoding" ](../../draft-07/json-schema-validation.html#rfc.section.8) | 從 Hyper-Schema 移至 Validation | 先前為 ["media": {"binaryEncoding": "..."} ](../../draft-06/json-schema-hypermedia.html#rfc.section.5.3) |
請注意,"content*"
關鍵字並非強制驗證。
格式
新增、澄清或從較舊的草案中恢復了許多格式。
格式 | 變更 | 備註 |
---|---|---|
["iri" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.5) | 已新增 | "uri" 的 I18N 等效項 |
["iri-reference" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.5) | 已新增 | "uri-reference" 的國際化 (I18N) 對應版本 |
["uri-template" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.6) | 已註明 IRI 支援 | 沒有單獨的 IRI 模板標準 |
["idn-email" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.2) | 已新增 | "email" 的國際化 (I18N) 對應版本 |
["idn-hostname" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.3) | 已新增 | "hostname" 的國際化 (I18N) 對應版本 |
["json-pointer" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.7) | 已澄清 | 僅用於字串形式,而非 URI 片段 |
["relative-json-pointer" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.7) | 已新增 | 恢復了相對 JSON 指標草案 |
["regex" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.8) | 從 draft-03 還原 | ECMA 262 正規表示式 |
["date" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.1) | 從 draft-03 還原 | RFC 3339 "full-date" |
["time" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.1) | 從 draft-03 還原 | RFC 3339 "full-time" |
所有其他的 RFC 3339 日期、時間和持續時間名稱都保留供未來考慮。 如果添加為擴展格式,它們應以與其在 RFC 中的使用方式相容的方式實現,以確保未來的相容性。
關鍵字的分類
雖然它對驗證過程沒有直接影響,但這組草案會根據關鍵字的行為對其進行分類。 這些分類的名稱在整個文件中使用,因此了解它們很有用
請注意,definitions
不屬於這些類別中的任何一個,以美元符號開頭的核心關鍵字也是如此。
收集註解值
註解關鍵字(以前稱為元數據關鍵字)現在提供了關於如何收集多個值的指南,這些值適用於實例中的同一個位置。 預設情況下,在否定模式中找不到的所有值都會被收集為一個無序的集合。 以下例外情況記錄在適當的關鍵字下
readOnly
和writeOnly
應進行邏輯 OR 運算examples
應扁平化為單一的收集陣列
超媒體環境中的 JSON Schema
這些變更與許多驗證用例無關,並且更多地是 Hyper-Schema 使用者感興趣的。 但是,即使沒有 Hyper-Schema,如果您透過 HTTP 或其他超媒體環境存取實例文件,您可能會發現此部分很有用。
連結實例和 Schema
在與「profile」規格的作者討論後,我們得出結論,它用於 JSON Schema 是不正確的。 將實例連結到模式的關係新指南是
連結關係 | 變更 | 備註 |
---|---|---|
「describedBy」 | 無變更 | 網路可存取的 URL |
「profile」 | 已移除;使用「schema」 | 不透明的識別 URI |
「schema」 | 已新增 | 不透明的識別 URI |
「schema」與過去草案中的「profile」一樣,也可以用作媒體類型參數。
實例媒體類型
此部分的變更與 JSON Hyper-Schema 的關聯性高於驗證,但由於它們是核心規範的一部分,因此在此處進行說明。
媒體類型決定其自身的參數以及其自身的 URI 片段語法。 application/json
不允許任何參數或 URI 片段。
application/schema-instance+json
是一種可選的媒體類型,用於支援「schema」作為媒體類型參數的實例,並允許使用 JSON 指標語法的 URI 片段。
支援「schema」作為媒體類型參數,可以在超媒體環境中進行基於模式的內容協商。
支援 JSON 指標 URI 片段主要用於 JSON Hyper-Schema,因為超模式使用中涉及的許多 URI 都源自或指向實例文件中的位置,而不是整個文件。