Главная » Java, Web » Методы НТТР

0

Ниже приведены методы, описанные в спецификации протокола НТТР/1.1.

Безопасные и идемпотентные методы

Имплементация методов осуществляется таким образом, что методы get и head могут быть использованы только для получения ответов ресурсов. Такие методы являются безопасными. Методы post, put и delete принципиально могут быть потенциально небезопасными, поскольку могут выполнять действия, которые в некотором смысле могут содержать угрозу безопасности. Конечно, нельзя быть полностью уверенным в том, что реализация даже того же метода get не приведет к небезопасным действиям. Важным здесь является то, что безопасные методы не могут вызвать небезопасных "побочных" эффектов при обработке соответствующих им клиентских запросов.

Большинство методов должно обладать свойством идемпотентности, при этом "побочный" эффект множественных запросов эквивалентен эффекту, возникающему от одного запроса. К идемпотентным методам относятся методы get, head, put И delete.

Метод OPTIONS

Запрос options запрашивает информацию о возможностях, предоставляемых для обмена запросами и ответами для данного ресурса. Клиент может использовать этот метод для того, чтобы определить опции и требования для взаимодействия с сервером. Серверный ответ не должен включать в себя информацию о сущности, кроме той, которая может касаться информации о коммуникации (т. е. заголовок Allow может быть использован, но заголовок Content-Type использовать нельзя). Ответы на этот запрос не кэшируются.

Если в качестве идентификатора ресурса используется звездочка (*), то запрос options относится к серверу в целом. Ответ с кодом 2 00 должен содержать заголовки, в которых указываются свойства сервера, включая поддержку таких расширений, которые не содержатся в стандартной спецификации.

Если в качестве идентификатора ресурса используется не звездочка, то запрос относится к конкретному ресурсу. В этом случае ответ с кодом 2 00 должен содержать информацию о возможностях сервера, применимых к данному ресурсу.

Метод GET

Метод get предполагает получение информации от сервера, которая передается в форму сущности. Если идентификатор ресурса указывает на процесс, создающий данные, то создаваемые данные передаются клиенту в виде сущности. При этом передается результат работы процесса, но не программный код, соответствующий процессу. Метод может иметь опцию условного выполнения, если запрос содержит заголовки с указанием If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match И if-Range. Такой метод будет выполнен только в том случае, если указанное условие выполняется. Ответы, посылаемые на запрос get, кэшируются, это уменьшает загрузку сети. Метод get может быть выполнен частично, если запрос содержит заголовок Range.

Запрос HEAD

Запрос head идентичен запросу get с той разницей, что сервер не может включить в ответ тело сообщения. Этот метод может быть использован для того, чтобы протестировать гиперссылки на доступность, работоспособность и наличие модификаций. Ответы могут кэшироваться, чтобы обновить информацию, полученную по такому запросу ранее.

Запрос POST

Метод post предполагает, что сервер получит от клиента информацию, которая помещается в тело сообщения в виде сущности и передается для обработки указанному идентификатору ресурса. Этот метод используется для решения таких задач, как

?      аннотирование существующих ресурсов;

?      размещение сообщений на досках объявлений, группах новостей, списках рассылки ит. п.;

?      отправка блоков данных, например, отправка данных из HTML-форм процессам, обрабатывающим данные;

?      внесение изменений в базы данных.

Код ответа сервера может быть 2 00, что означает, что запрошенный ресурс существует на сервере, если ресурс не возвращает в ответе сущности, то используется код 204 (no content). Если ресурс на сервере будет создан заново, то возвращается код 201 (created), при этом возвращается сущность, содержащая статус и заголовок Location. Ответы не кэшируются, если ответ не содержит заголовков Cache-Control или Expiress.

Запрос PUT

Метод put предполагает, что передаваемая сущность будет сохранена под указанным идентификатором Request-URi. Если запрос с таким идентификатором уже существует, то передаваемая сущность будет считаться обновленной версией ресурса. Если новый ресурс будет создан на сервере, то сервер должен послать ответ с кодом 201 (created). Если модифицирован существующий ресурс, то должен быть возвращен код 200 (ок) или код 2 04 (no content), что обозначает успешное создание нового ресурса.

Запрос DELETE

Запрос delete используется для удаления ресурса по указанному Request- uri. Автор запроса не может быть уверен в том, что ресурс удален даже тогда, когда получен положительный статус-код в ответе. Операция на сервере может быть удалена вручную, однако при положительном ответе на запрос сервер удаляет ресурс, перемещая его в недоступное место. В качестве ответа могут быть отправлены коды 200 (ок), 202 (Accepted) или 204 (No content). Ответ не кэшируется.

Запрос TRACE

Запрос trace позволяет клиенту увидеть, что получает сервер на противоположном конце, и использовать эту информацию для диагностики и тестирования.

Источник: Будилов В. А. Интернет-программирование на Java. — СПб.: БХВ-Петербург, 2003. — 704 е.: ил.

По теме:

  • Комментарии