ГОСТ Р ИСО/МЭК 17826-2015
http://doud.example.com/dataobject7value
Кодировка данных, передаваемых из поля value объекта данных, определяется значением поля
valuetransferencoding этого объекта.
Если кодировка значения установлена в «utf-8», данные в поле value объекта должны быть кор
ректной строкой UTF-8, идолжны передаваться в поле value как строка UTF-8.
Если кодировка значения установлена в «base64». данные в поле value объекта могут быть произ
вольной бинарной последовательностью и должны передаваться как строка в кодировке base 64.
Отдельный диапазон значения объекта может быть получен указанием диапазона байтов после
имени поля. Например, следующий URI возвращает первые 1000 байт поля value:
http://doud.example.eom/dataobject7value:0-999
Так как диапазон байтов строки UTF-8 не всегда является корректной строкой UTF-8. ответ на за
прос с обозначенными границами диапазона передается как строка в кодировке base 64. Аналогично,
при изменении диапазона байтов значения поля объекта, содержимое поля должно передаваться как
строка в кодировке base 64.
Диапазон байтов включает границы диапазона, как указано в п. 14.35.1 RFC 2616.
Допускается указание списка уникальных полей, разделенных символом «;». что позволяет об
ратиться к нескольким полям в одном запросе. Например, следующий URI возвращает поля value и
metadata в сообщении-ответе:
http://doud.example.eom/dataobject7value:metadata
Если клиент создает поля, не определенные в настоящем стандарте, или десериализует объект,
содержащий поля, не описанные в данном международном стандарте, эти поля должны храниться как
часть объекта, но не должны интерпретироваться.
8.1.1 Метаданные объекта данных
Метаданные объекта данных могу также включать произвольные метаданные, определенные
пользователем, и метаданные системыданных, см. гл. 16. Метаданные следует хранить как корректную
строку UTF-8. Бинарные данные, сохраненные в пользовательских метаданных, должны быть вначале
перекодированы таким образом, чтобы их можно было включить в корректную строку UTF-8; рекомен
дуется использовать кодировку base 64.
8.1.2 Согласованность объекта данных
Запись в объект данных является атомарной операцией.
Если клиент читаетданные из объекта одновременно с операцией записи данных в тот же объект,
чтение должно возвращать либо старое значение, либо новое, но не их смесь.
Если запись завершается с ошибкой, содержимое объекта должно остаться таким, как если бы
запись не производилась (другими словами, запись является атомарной операцией по отношению к
ошибкам).
Метка времени, возвращенная в ответ на запись, показывает, была ли запись последней
операцией (то есть, запись, результат которой будет возвращен при последующем чтении, пока не
произойдет новая запись). Если метка времени, возвращаемая при записи, показывает более
позднее время, чем метка времени для другой записи, тогда запись с более поздней меткой ста
новится той. чьи данные находятся в объекте в настоящее время, если записи происходят одно
временно.
Записи в диапазон могут привести к промежутку в значении объекта, не содержащему записанных
данных. Чтение из промежутка с отсутствующими данными должно выдавать нуль в каждом прочитан
ном байте.
Реализации настоящего стандарта должны обеспечивать атомарность операций, описанных в
данном разделе, если объекты данных обрабатываются через CDMI. Атомарность свойств объектов,
обрабатываемых по другим протоколам, выходит за рамки настоящего стандарта.
8.1.3 Представления объекта данных
Вданном разделе используется нотация JSON. И клиенты, исерверыдолжны поддерживать пред
ставление UTF-8 JSON. В теле сообщения-запроса и соощения-ответа поля объекта JSON могут обо
значаться или возвращаться в любом порядке, за исключением (в случае их наличия) полей valuerange и
value объекта данных, которые должны появляться последними и в указанном порядке.
19