Поле 'id' валидатора схемы JSON - PullRequest
0 голосов
/ 30 мая 2018

Я использую JSON-схему для проверки файла.Это похоже на XML XSD.

У меня есть несколько вопросов относительно поля id .

  • Работает ли схема без сетевого подключения?
  • URL-адрес в идентификаторе должен быть доступен из веб-браузера?то есть, если 'id' = "https://example.com/question", означает ли это, что мы должны иметь возможность получить доступ к схеме из браузера, перейдя к https://example.com/question?

Я являюсьнемного потерян на эту тему. Я знаю, что лучше всего иметь свойство id в качестве уникального идентификатора для каждой схемы, и что это становится наиболее полезным при создании сложной схемы с различными схемами, которые ссылаются друг на друга.

Но я не уверен, нужно ли нам присваивать URL-адрес полю id или нет. И я также растерялся из-за использования этого URL для схемы.

СпасибоВы очень за вашу помощь

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

$ id определен только как URI.

http://json -schema.org / draft-07 / json-schema-core.html # rfc.section.8.2

См. RFC-3986 Унифицированный идентификатор ресурса (URI): Общий синтаксис

https://tools.ietf.org/html/rfc3986

«Унифицированный идентификатор ресурса (URI) представляет собой компактную последовательность символов, которая идентифицируетабстрактный или физический ресурс. "

Хорошая статья Даниэля Мессье дает четкое объяснение природы URI - который может быть просто URN, но также может быть действительным URL

https://danielmiessler.com/study/url-uri/

0 голосов
/ 30 мая 2018

Основная цель id ($id с draft-06) - организовать область для разрешения $ref.

$id не обязательно должен быть существующим ресурсом HTTP.Идентифицированная схема может быть даже определена в другой ( пример в наборе тестов спецификации).

В спецификации схемы JSON предполагается, что валидатор должен иметь возможность разрешать ссылки на основе $id s, определенных в текущемсхемы.Удаленные ссылки также должны быть разрешены, но нет никаких ограничений на то, как именно это должно происходить.

Во многих случаях сетевые взаимодействия во время проверок очень нежелательны из-за высокой задержки.Большинство реализаций предоставляют способ предварительной загрузки / определения ресурсов схемы путем явного $id перед проверкой.

В соответствии с spec корневая схема ДОЛЖНА иметь $id, который является абсолютным URI, но должен лиили нет, он должен быть доступен через HTTP-клиент, зависит от вас и вашего валидатора.

...