Что такое ключ `location` в выражении opa re go resultset? я могу получить местоположения на входе json, которые вызвали нарушение политики? - PullRequest
0 голосов
/ 28 апреля 2020

Я использую go re go пакет, и re go .ResultSet при маршаллинге дает следующее:

[
  {
    "expressions": [
      {
        "value": {...},
        "text": "data",
        "location": { "row": 1, "col": 1 }
      }
    ]
  }
]

Я намереваюсь вывести местоположение (я) в Input JSON, где ключи были ответственны за сбои, чтобы я мог использовать это при создании контекста для ошибок. Ранее мы использовали схему JSON для проверки JSON, и она использовалась для возврата ключей от ввода, которые мы можем отобразить с ошибками. https://www.jsonschemavalidator.net/

Полагаю, что re go мог бы поддержать гораздо более сложное принятие решений, когда более чем один ключ отвечал бы за принятие окончательного результата, что могло бы стать причиной не указывать на местоположение на входе для контекста сбоя. разве я что-то упустил?

1 Ответ

2 голосов
/ 28 апреля 2020

Чтобы ответить на первый вопрос:

Каждое значение, анализируемое OPA, сохраняет информацию о местоположении, определяющую, откуда оно пришло в исходной строке / файле. Расположение в ResultSet - это расположение выражения в запросе, который был передан при создании объекта rego.Rego.

В вашем случае запрос был "data", т.е. Вы ссылались на ВСЕ документы в OPA (как базовые документы, которые могли быть загружены извне, так и виртуальные документы, созданные по любым правилам, загруженным в OPA.) Расположение выражения в этом случае не очень интересно: строка 1 , столбец 1.

Чтобы ответить на ваш второй вопрос:

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

...