RFC: 2068
Оригинал: Hypertext Transfer Protocol - HTTP/1.1
Другие версии: RFC 2616
Категория: Предложенный стандарт
Дата публикации:
Авторы: , , , ,
Перевод: Алексей Симонов

9.6. PUT

Запросы с методом PUT, которые содержат объект, сохраняются под запрашиваемым URI (Request-URI). Если Request-URI обращается к уже существующему ресурсу, включенный объект СЛЕДУЕТ рассматривать как модифицированную версию объекта, находящегося на первоначальном сервере. Если Request-URI не указывает на существующий ресурс, и может интерпретироваться агентом пользователя как новый ресурс для запросов, первоначальный сервер может создать ресурс с данным URI. Если новый ресурс создан, то первоначальный сервер ДОЛЖЕН сообщить агенту пользователя об этом посредством ответа с кодом состояния 201 (Создан, Created). Если существующий ресурс модифицирован, то для указания успешного завершения запроса СЛЕДУЕТ послать ответ с кодом состояния либо 200 (OK), либо 204 (Нет содержимого, No Content). Если ресурс не может быть создан или изменен для запрашиваемого URI (Request-URI), то СЛЕДУЕТ послать ответ, отражающий характер проблемы. Получатель объекта НЕ ДОЛЖЕН игнорировать заголовков Content-* (например Content-Range), которых не понимает или не реализует, а ДОЛЖЕН в данном случае возвратить ответ с кодом состояния 501 (Не реализовано, Not Implemented).

Если запрос передается через кэш и запрашиваемый URI (Request-URI) идентифицирует один или несколько кэшированных в настоящее время объектов, то вхождения в кэш этих объектов должны обрабатываться как просроченные. Ответы на этот метод не кэшируемы.

Фундаментальное различие между POST и PUT запросами, отражено в различном значении запрашиваемого URI (Request-URI). URI в запросе POST идентифицирует ресурс, который обрабатывает включенный объект. Этим ресурсом может быть процесс, принимающий данные, шлюз к некоторому другому протоколу, или отдельный объект, который принимает аннотации (accepts annotations). Напротив, URI в запросе PUT идентифицирует объект, включенный в запрос — агент пользователя назначает данный URI включенному ресурсу, а сервер НЕ ДОЛЖЕН пытаться применить запрос к некоторому другому ресурсу. Если сервер желает применить запрос к другому URI, он ДОЛЖЕН послать ответ с кодом 301 (Перемещен постоянно, Moved Permanently); агент пользователя МОЖЕТ затем принять собственное решение относительно переназначения запроса.

Одиночный ресурс МОЖЕТ быть идентифицирован несколькими различными URI. Например, статья может иметь URI идентифицирующий "текущую версию", который отличен от URI, идентифицирующего каждую специфическую версию. В этом случае, запрос PUT на общий URI может отразиться (may result) на нескольких других URI, определенных сервером происхождения.

HTTP/1.1 не определяет каким образом метод PUT воздействует на состояние первоначального сервера.

Запросы PUT должны подчиняться требованиям передачи сообщений, изложенным в разделе 8.2.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.