URI - это идентификатор - с точки зрения компонентов общего назначения он семантически непрозрачен. Информация о текущем состоянии ресурса выражается в представлении, а не в идентификаторе.
Теперь я хочу сменить книгу на другого автора.
Как на клиенте, обычный способ сделать это - загрузить копию представления книги, изменить локальную копию для ссылки на нового автора, а затем отправить запрос PUT для того же целевого URI, который вы использовали для получения представления , Семантика PUT просит сервер изменить представление сервера целевого ресурса в соответствии с клиентом.
Сервер может кодировать информацию в URI, но эта информация предназначена исключительно для использования сервером.
Что, да, означает, что потенциально клиент может вносить изменения в представление, которые конфликтуют с "семантикой", выраженной в URI. Это аналогично ситуации, когда имя файла и его содержимое не выровнены.
Сервер, поняв семантику запроса общего назначения, может затем решить, что с ним делать. Разумные варианты включают
- Отклонение запроса
- Принятие изменений на месте, оставление разногласий между идентификатором и представлением
- Принятие этих изменений в каком-то другом месте эффективное создание (или редактирование) нового ресурса.
Последний вариант, пожалуй, самый сложный, чтобы понять, как настроить клиент общего назначения для соответствия его пониманию обновленной модели ресурсов сервера.