post get запросы что это

Типы HTTP-запросов и философия REST

Этот пост — ответ на вопрос, заданный в комментарии к одной из моих статей.

В статье я хочу рассказать, что же из себя представляют HTTP-методы GET/POST/PUT/DELETE и другие, для чего они были придуманы и как их использовать в соответствии с REST.

Итак, что же представляет из себя один из основных протоколов интернета? Педантов отправлю к RFC2616, а остальным расскажу по-человечески 🙂

Этот протокол описывает взаимодействие между двумя компьютерами (клиентом и сервером), построенное на базе сообщений, называемых запрос (Request) и ответ (Response). Каждое сообщение состоит из трех частей: стартовая строка, заголовки и тело. При этом обязательной является только стартовая строка.

Стартовые строки для запроса и ответа имеют различный формат — нам интересна только стартовая строка запроса, которая выглядит так:

где METHOD — это как раз метод HTTP-запроса, URI — идентификатор ресурса, VERSION — версия протокола (на данный момент актуальна версия 1.1).

Заголовки — это набор пар имя-значение, разделенных двоеточием. В заголовках передается различная служебная информация: кодировка сообщения, название и версия браузера, адрес, с которого пришел клиент (Referrer) и так далее.

Тело сообщения — это, собственно, передаваемые данные. В ответе передаваемыми данными, как правило, является html-страница, которую запросил браузер, а в запросе, например, в теле сообщения передается содержимое файлов, загружаемых на сервер. Но как правило, тело сообщения в запросе вообще отсутствует.

Пример HTTP-взаимодействия

Первая строка — это строка запроса, остальные — заголовки; тело сообщения отсутствует

Ресурсы и методы

Вернемся к стартовой строке запроса и вспомним, что в ней присутствует такой параметр, как URI. Это расшифровывается, как Uniform Resource Identifier — единообразный идентификатор ресурса. Ресурс — это, как правило, файл на сервере (пример URI в данном случае ‘/styles.css’), но вообще ресурсом может являться и какой-либо абстрактный объект (‘/blogs/webdev/’ — указывает на блок «Веб-разработка», а не на конкретный файл).

Тип HTTP-запроса (также называемый HTTP-метод) указывает серверу на то, какое действие мы хотим произвести с ресурсом. Изначально (в начале 90-х) предполагалось, что клиент может хотеть от ресурса только одно — получить его, однако сейчас по протоколу HTTP можно создавать посты, редактировать профиль, удалять сообщения и многое другое. И эти действия сложно объединить термином «получение».

В игру вступает REST

REST (REpresentational State Transfer) — это термин был введен в 2000-м году Роем Филдингом (Roy Fielding) — одним из разработчиков протокола HTTP — в качестве названия группы принципов построения веб-приложений. Вообще REST охватывает более широкую область, нежели HTTP — его можно применять и в других сетях с другими протоколами. REST описывает принципы взаимодействия клиента и сервера, основанные на понятиях «ресурса» и «глагола» (можно понимать их как подлежащее и сказуемое). В случае HTTP ресурс определяется своим URI, а глагол — это HTTP-метод.

REST предлагает отказаться от использования одинаковых URI для разных ресурсов (то есть адреса двух разных статей вроде /index.php?article_id=10 и /index.php?article_id=20 — это не REST-way) и использовать разные HTTP-методы для разных действий. То есть веб-приложение, написанное с использованием REST подхода будет удалять ресурс при обращении к нему с HTTP-методом DELETE (разумеется, это не значит, что надо давать возможность удалить всё и вся, но любой запрос на удаление в приложении должен использовать HTTP-метод DELETE).

REST дает программистам возможность писать стандартизованные и чуть более красивые веб-приложения, чем раньше. Используя REST, URI для добавления нового юзера будет не /user.php?action=create (метод GET/POST), а просто /user.php (метод строго POST).

В итоге, совместив имеющуюся спецификацию HTTP и REST-подход наконец-то обретают смысл различные HTTP-методы. GET — возвращает ресурс, POST — создает новый, PUT — обновляет существующий, DELETE — удаляет.

Проблемы?

Да, есть небольшая проблема с применением REST на практике. Проблема эта называется HTML.

PUT/DELETE запросы можно отправлять посредством XMLHttpRequest, посредством обращения к серверу «вручную» (скажем, через curl или даже через telnet), но нельзя сделать HTML-форму, отправляющую полноценный PUT/DELETE-запрос.

Дело в том, спецификация HTML не позволяет создавать формы, отправляющие данные иначе, чем через GET или POST. Поэтому для нормальной работы с другими методами приходится имитировать их искусственно. Например, в Rack (механизм, на базе которого Ruby взаимодействует с веб-сервером; с применением Rack сделаны Rails, Merb и другие Ruby-фреймворки) в форму можно добавить hidden-поле с именем «_method», а в качестве значения указать название метода (например, «PUT») — в этом случае будет отправлен POST-запрос, но Rack сможет сделать вид, что получил PUT, а не POST.

Источник

Методы HTTP-запросов: примеры и возможные проблемы

post get запросы что это. Смотреть фото post get запросы что это. Смотреть картинку post get запросы что это. Картинка про post get запросы что это. Фото post get запросы что это

post get запросы что это. Смотреть фото post get запросы что это. Смотреть картинку post get запросы что это. Картинка про post get запросы что это. Фото post get запросы что это post get запросы что это. Смотреть фото post get запросы что это. Смотреть картинку post get запросы что это. Картинка про post get запросы что это. Фото post get запросы что это post get запросы что это. Смотреть фото post get запросы что это. Смотреть картинку post get запросы что это. Картинка про post get запросы что это. Фото post get запросы что это

HTTP — это популярный протокол связи, который используется для просмотра веб-страниц. Он определяет несколько стандартных методов, которые указывают ресурсу, какое действие нужно выполнить: отдать данные, внести изменения, удалить объект. В этой обзорной статье мы рассмотрим структуру запросов, примеры использования методов, а также разницу между ними.

post get запросы что это. Смотреть фото post get запросы что это. Смотреть картинку post get запросы что это. Картинка про post get запросы что это. Фото post get запросы что это

Реакция моего тимлида поражает умиротворением

1. Структура запросов и ответов

HTTP не имеет состояния. Он использует модель на основе сообщений. Каждое взаимодействие с клиентами включает запрос и ответ.

Все сообщения по HTTP имеют один или несколько заголовков. За ними может следовать тело с данными, отправленными при запросе или полученными при ответе.

Разберем структуру запроса на примере:

В запросе могут быть и другие данные, которые записываются в разные хедеры:

Ответы на HTTP запросы тоже состоят их трех частей. Например:

2. Методы HTTP-запроса

Все HTTP Methods можно разделить на три большие группы:

3. Примеры запросов и ответов по протоколу HTTP

GET — запрашиваем содержимое ресурса, получаем данные и никак их не меняем.

Запрос:

Ответ:

Запрос:

Ответ:

POST — создает новый ресурс из данных.

Запрос:

Если файла не было, возвращается ответ:

Если файл был, возвращается ответ:

POST часто применяется для отправки данных из формы HTML, которую заполняет пользователь на сайте.

PUT — меняет содержимое по указанному URL.

Запрос:

Если файл был, возвращается ответ:

Если файла не было, возвращается ответ:

DELETE — удаляет ресурс по указанному URL.

Запрос:

Ответ:

4. Разница между GET и POST, POST и PUT

ДействиеGETPOST
Кнопка «Назад» / ПерезагрузкаБезопасноДанные отправляются повторно, браузер должен предупреждать пользователя об этом
Добавление в закладкиДаНет
КешированиеДаНет
Тип кодировкиapplication/x-www-form-urlencodedapplication/x-www-form-urlencoded or multipart/form-data
ИсторияСохраняется в историиНе сохраняется в истории
Ограничение в длине запросаЗапрос ограничен 2048 символами. Это связано с тем, что он передается внутри URL, который не может быть длиннееБез ограничений
Ограничение по типу данныхТолько символы ASCIIБез ограничений, можно использовать двоичные данные
Видимость в URLВсе данные видны в URLДанные не отображаются в URL
БезопасностьДанные, переданные в URL, видны пользователю. Безопасность низкаяДанные не отображаются в веб-клиенте, не кэшируются и не сохраняются. Безопасность высокая.

5. Совместимость с браузерами

У большинства запросов полная совместимость со всеми популярными браузерами. Даже с Internet Explorer нет проблем, потому что без использования основных методов он бы вообще не работал так, как это нужно обычным пользователям.

post get запросы что это. Смотреть фото post get запросы что это. Смотреть картинку post get запросы что это. Картинка про post get запросы что это. Фото post get запросы что это

Скриншот с сайта developer.mozilla.org

Это метод, который проверяет обратную связь по пути к целевому ресурсу. Благодаря этому в распоряжении разработчика появляется полезный механизм отладки.

В теле ответа TRACE возвращает то, что было отправлено в запросе. Поэтому его используют в тех случаях, когда нужно узнать, что конкретно получает сервер с клиента.

Заключение

Если хотите узнать больше о протоколе HTTP и основных методах, посмотрите это видео:

Что такое индексы в Mysql и как их использовать для оптимизации запросов

Как исправить ошибку доступа к базе 1045 Access denied for user

Источник

Post и Get запросы, какая между ними разница и что лучше и для каких целей?

Средний 1 комментарий

post get запросы что это. Смотреть фото post get запросы что это. Смотреть картинку post get запросы что это. Картинка про post get запросы что это. Фото post get запросы что это

Общего между ними то что они работают одинаково. Разницы между ними технически никакой. А вот идеологические различия есть.

Я расскажу о них в контексте PHP. Прошу заметить что протокол HTTP к PHP имеет косвенное отношение потому что он создавался для обмена html страницами а PHP просто расширяет возможности и того и другого.

GET запрос используется чтобы получить данные а POST чтобы отправить. (Напоминаю что технически они работают одинаково).

Чаще всего пост запрос используется в формах (для отправки данных).

Например у нас есть форма для входа 2 поля логин и пароль.

Представим что мы используем GET метод. Тогда при отправке формы мы перейдем на следующий адрес /login.php?login=Андрей&password=123 согласитесь что так передавать такую информацию совсем не безопасно. Любой может открыть ваш браузер и начиная вводить адрес сайта он из истории может увидеть ваши пароли и логины.

А вот если бы мы указали методом POST то мы бы получили следующий запрос:
POST /login.php (login=Андрей&password=123) то что в скобочках было бы скрыто и никак не сохранено в браузере.

Теперь другая ситуация например форма поиска. Мы вводим текст и получаем страницу с результатами. Вот тут уместнее GET форма. потому что нам было бы удобно сразу иметь ссылку на результат поиска, то есть добавить в строку запроса можно выразится «Публичные параметры», которыми можно поделиться. И как результат в строке браузера будет конкретная ссылка на текущую страницу. Мы можем ее скопировать, и разместить где-нибудь, или например скинуть другу. И получить при переходе одну и ту же страницу. А не просить других людей зайти на сайт и в поиск вбить определенную фразу чтобы получить необходимую страницу.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *