Метод HTTP -запроса, указанный в протоколе HTTP/1.1, - это параметры, Get, Head, Post, Pult, Delete, Trace, Connect. Среди них POST обычно используется для отправки данных на сервер.
Мы знаем, что протокол HTTP передается кодом ASCII, а спецификации уровня приложений на основе протокола TCP/IP. Спецификации делят HTTP -запросы на три части: строка состояния, запрос головы и субъект сообщения. Похоже на следующее:
<Emod> <prepkest-url> <vision> <headers> <vitity-body> </entity-body> </headers> </version> </request-url> </method> </method> </method > </Method>
Соглашение предусматривает, что данные, представленные в сообщении, должны быть размещены в теле субъекта, но в соглашении не указывается, что должны использоваться данные. Фактически, разработчики могут сами определить формат предмета сообщения.
Однако, если данные отправлены, значимо добиться успеха на сервере. Общий язык сервера, такой как Java и их структура, создали -в функциях автоматического анализа общих форматов данных. Сервер обычно изучается из поля типа контента в заголовке запроса, чтобы узнать, как субъект сообщения в запросе кодируется в запросе, а затем анализирует субъект. Поэтому, когда дело доходит до публикации схемы данных, он содержит две части: кодирование типа контента и предмета сообщения. Вот официальное введение в них.
Приложение/X-WWW-FORM-URLENCODEDЭто должен быть наиболее распространенным способом отправки данных. Если нативная форма формы браузера, если атрибут enctype не установлен, то данные будут отправлены Application/xwww-form-urlencoded. Запрос аналогичен следующему (в этой статье опущен нерелевантный заголовок запроса):
Post http://www.example.com http/1.1content-type: Application/xwww-forlem-urlencoded; 5b%5d = 3
Прежде всего, контент-тип определяется как приложение/X-WW-Form-Urlencoded; Большинство языков сервера имеют хорошую поддержку для этого метода. Например, в PHP Post [′ Title ′] может получить значение заголовка.
Много раз, когда мы отправляем данные с Ajax, мы также используем этот метод. Например, Ajax от jQuery, значение по умолчанию контента-«Application/x-Www-form-Urlencoded; charset = utf-8».
Multipart/Form-DataЭто еще один распространенный способ публикации данных. Когда мы загружаем файлы с формами, мы должны сделать форму, равным этому значению. Приходите непосредственно к примеру запроса:
Post http://www.example.com http/1.1content-type: multiply/form-data; --- webkitformboundaryrgkcby7qhfd3trwacontent-disposition: form-data;
Этот пример немного сложный. Прежде всего, граница используется для разделения различных полей. Затем тип контента указывает, что данные кодируются Mutipart/Form-Data, какова запрашиваемая граница на этот раз. Субъект сообщения делится на аналогичные части с аналогичной структурой в соответствии с количеством разделов. ) Если файл передается, он также содержит имя файла и информацию типа файла. Субъект сообщения наконец закончился-Boundary-. Для получения подробных определений Mutipart/Form-Data, пожалуйста, перейдите в RFC1867, чтобы просмотреть.
Этот метод обычно используется для загрузки файлов, и основной язык сервера также имеет хорошую поддержку для него.
Два метода публикации данных, упомянутых выше, являются собственной поддержкой браузеров, и на этом этапе формы нативной формы поддерживают только эти два метода. Однако, поскольку все больше и больше веб -сайтов, особенно WebApp, все используют Ajax для взаимодействия с данными, мы можем полностью определить новые методы представления данных, чтобы обеспечить больше удобства для разработки.
Приложение/JSONПриложение/JSON, тип контента, определенно не незнаком с заголовком ответа. На самом деле, все больше и больше людей теперь используют его в качестве запроса, чтобы сообщить о сообщении сервера, что основным телом является сериализованная строка JSON. Из -за популярности спецификаций JSON основные браузеры, за исключением низко -версии IE, являются родными для JSON.Stringify, а язык сервера также имеет функцию для борьбы с JSON, и JSON не столкнется с какими -либо проблемами.
Формат JSON поддерживает более сложные структурированные данные, чем значения ключей, что также полезно. Я помню, когда я сделал проект несколько лет назад, уровень данных, который мне нужно было отправить, был очень глубоким. Тем не менее, в то время я использовал строку JSON в качестве значения, и я все еще был помещен в пару значений ключей и отправил ее в XWW-Form-UrlencoDed.
Функция AJAX в AngularJs of Google состоит в том, чтобы по умолчанию отправить строку JSON. Например, следующий код:
var data = {'title': 'test', 'sub': [1,2,3]};
Последний запрос:
Popet http://www.example.com http/1.1content-type: Application/json;
Эта схема может легко представить сложные структурированные данные, особенно подходящие для Restful Interface. Основные упаковочные инструменты, такие как собственные инструменты разработчика Chrome, Firebug и Fiddler, будут отображать данные JSON со структурой дерева, которая очень дружелюбна. Тем не менее, есть также некоторые языки сервера, которые не поддерживали этот метод. В настоящее время вам нужно обрабатывать с этим самостоятельно: когда контент-тип является приложением/JSON в заголовке запроса, получите исходный поток ввода от php: // input, а затем json_decode. Некоторые рамки Java начали делать.
Конечно, AngularJS также можно настроить для отправки данных с помощью X-WW-Form-UrlencoDed.
Текст/XMLXML-RPC (XML удаленная процедура вызов). Это спецификация удаленного вызова с использованием HTTP в качестве протокола передачи и XML в качестве метода кодирования. Типичный запрос XML-RPC является следующим: post http://www.example.com http/1.1content-type: text/xml <!-? /Methodname> <params> <param> <datter> <i4> 41 </i4> </value> </params> </methodcall>
Протокол XML-RPC прост и полон функций, и доступна реализация различных языков. Он также широко используется, например, API XML-RPC WordPress, служба PING поисковой системы и так далее. В JavaScript есть также готовая библиотека для поддержки взаимодействия данных таким образом, которая может хорошо поддерживать существующие услуги XML-RPC. Тем не менее, я лично думаю, что XML -структура все еще слишком раздута.