Я нахожусь в процессе реализации RESTful API, и я не уверен насчет поведения, принятого сообществом, для наличия данных, которые не могут измениться. Например, в моем API есть ресурс «файл», который при создании содержит ряд полей, которые нельзя изменить после создания, таких как двоичные данные файла и некоторые метаданные, связанные с ним. Кроме того, «файл» может иметь письменное описание и связанные теги.
Мой вопрос касается обновления одного из этих файловых ресурсов. GET определенного «файла» вернет все метаданные, описание и теги, связанные с файлом, а также двоичные данные файла. Должен ли PUT определенного ресурса 'file' включать поля 'только для чтения'? Я понимаю, что это может быть закодировано любым способом: а) включить поля только для чтения в данные PUT и затем убедиться, что они соответствуют оригиналу (или выдать ошибку), или б) игнорировать присутствие полей только для чтения в данных PUT потому что они не могут измениться, никогда не выдавая ошибку, если они не совпадают или отсутствуют, потому что логика их игнорирует.
Похоже, что это может пойти в любую сторону и быть приемлемым. Второй способ игнорирования полей только для чтения может быть более компактным, поскольку клиент API может пропустить отправку этих данных только для чтения, если они захотят; что хорошо для людей, которые знают, что делают ...