ГОСТ Р ИСО/МЭК 19831—2017
Если Sfirst или Siast определены и выражение фильтра (в соответствии с 4.1.6.1) также определе
но. то первым должно быть обработано выражение фильтра, а затем следует применять порядковые
ограничения Sfirst и $last.
4.1.6.3 Выделение подмножества Ресурса
Запрашивая представление Ресурса Потребители могут включать параметр запроса Sselect, что
бы определить подмножество Ресурса, с которыми будут взаимодействовать. Поставщики должны ин
терпретировать и обработать этот параметр запроса в соответствии с требованиями настоящего
раз дела. Данное подмножество должно иметь семантическую эквивалентность ссылки на другой
Ресурс, атрибутами которого является подмножество исходного Ресурса в соответствии с именами
атрибутов, перечисленными в параметре запроса Sselect. Формат параметра запроса Sselect:
? $5е1ес1=иаименование Атрибута...
Значение параметра запроса Sselect должно выглядеть как перечень наименований атрибутов
верхнего уровня Ресурса, разделенных запятой, возможно включая строку «operations» в этом случае,
необходимо выбрать операции, доступные Потребителю для этого Ресурса. Любое наименование атри
бута. ошибочно появляющееся в списке, который не является частью Ресурса, должно быть проигнори
ровано Поставщиком. Наименование атрибута «*» эквивалентно определению всех атрибутов Ресурса,
включая его операции. Если наименование атрибута явно появляется в URI более одного раза, его
второе (и последующие появления) должны быть проигнорированы.
В URI параметр запроса Sselect может появиться несколько раз. Это семантически эквивалентно
появлению всех имен атрибутов как значения единичного параметра запроса Sselect. Например:
?$select=name&Sselect=state
эквивалентно:
? $select=name.state
В целях сериализации порядок имен атрибутов в параметре запроса Sselect не имеет значения.
Атрибуты сериализуются в соответствии с правилами/порядком сериализации, указанным в определе
нии Ресурса.
Примечание — Какуказаное4.1.4.если представлениеРесурсаотправляется Поставщиком,онодолж
но всегда включатьв себяатрибутresourceURI.даже если это не определено в параметре запроса Sselect.
Например чтобы ограничить подмножество перечня атрибутов объектов Machine, с которыми По
требитель собирается взаимодействовать, только атрибутами «пате» и «description», используется
следующий параметр запроса:
?$select=name.description
Информация о влиянии этого параметра запроса при обновлении Ресурса приведена в 4.2.1.3.1.
Если для Ресурса Набора в URI используется Sselect. то подмножества должны применяться к
атрибутам самого Набора, как для любого другого Ресурса. Например, следующее определение под
множества Ресурса Набора приведет к передаче только числа элементов и операций, доступных для
данного Набора:
?$select=count,operations
Однако в случае Ресурсов Набора, если некоторый атрибут, указанный в списке Sselect. не явля
ется атрибутом верхнего уровня Ресурса Набора, а вместо этого является атрибутом объектов, которые
являются элементами Набора, то подмножество должно относиться к каждому элементу Набора отно
сительно этого атрибута. Например при получении DiskCotlection следующий параметр запроса ?$se-
lect=name.capacity возвращает набор экземпляров Disk, связанных с некоторым экземпляром Machine,
но каждый объект Набора содержит только атрибуты пате и capacity, а также атрибуты operation или id.
Опционально реализация также может поддерживать альтернативную нотацию наименования
атрибута <collectionName>/<attributeName> для выделения подмножества элементов в наборе. Напри
мер следующее подмножество из элементов Набора DiskCollection эквивалентно тому, которое было
выполнено в предыдущем примере: кроме того, включается перечисление операций самого ресурса
Набора (а не его элементов):
?$select=disks/name,disks/capacity.operations
Если поддерживается эта нотация (см. возможность «QueryPathNotation» в 5.11.2). она позволяет
разрешать неоднозначности подмножеств, если одно и то же наименование атрибута можно найти как в
самом Наборе, так идля каждого элемента в Наборе (это всегда верно для id и operations).
8