Как базовый URL изменяет разрешение фрагмента простого имени с помощью схемы JSON? - PullRequest
0 голосов
/ 12 октября 2018

Выдержка из http://json -schema.org / draft-07 / json-schema-core.html # rfc.section.8.2.4

{
    "$id": "http://example.com/root.json",
    "definitions": {
        "A": { "$id": "#foo" },
        "B": {
            "$id": "other.json",
            "definitions": {
                "X": { "$id": "#bar" },
                "Y": { "$id": "t/inner.json" }
            }
        },
        "C": {
            "$id": "urn:uuid:ee564b8a-7a87-4125-8c96-e9f123d6766f"
        }
    }
}

Схемы в следующих URI-кодированных указателях JSON [RFC6901] (относительно корневой схемы) имеют следующие базовые URI и могут быть идентифицированы любым перечисленным URI в соответствии с разделом 5 выше:

...
#/definitions/B/definitions/X
        http://example.com/other.json#bar
        http://example.com/other.json#/definitions/X
        http://example.com/root.json#/definitions/B/definitions/X
...

Почему http://example.com/root.json#bar не является допустимым базовым URI для # / определения / B / определения / X?

1 Ответ

0 голосов
/ 12 октября 2018

http://example.com/root.json#bar невозможно разрешить с помощью данной схемы.

Думайте об этом как о якорях в HTML.$id похоже на определение новой страницы, поэтому расположение #/definitions/B находится под "страницей" $other.json, поэтому http://example.com/other.json#bar в списке, который вы включили, являются эквивалентами для #/definitions/B/definitions/X.

Если вы создаете HTML-страницу с номером http://example.com/root.json и пытаетесь щелкнуть ссылку с номером #bar, она не найдет местоположение #, поскольку оно находится на странице other.json.

Пожалуйста, дайте мнезнать, если что-то из этого не имеет смысла или сбивает с толку.

...