Запросить полезную нагрузку и тело запроса

Я изучаю REST, делая POST-вызов, я отправляю полезную нагрузку запроса, которая может быть формата XML или JSON. Я хотел бы знать, является ли запрос полезной нагрузки и тело запроса одинаковым?

Ответ 1

Определение: payload: "фактические данные" в пакете или файле минус все заголовки, прикрепленные к транспорту, и минус все описательные метаданные. В сетевом пакете заголовки добавляются к полезной нагрузке для транспорта и затем отбрасываются в месте их назначения.

Изменение: В протоколе Http, пакет http имеет заголовки http и полезную нагрузку http. Поэтому раздел полезной нагрузки пакета http может иметь или не иметь тело в зависимости от типа запроса (например, POST против GET). Так что полезная нагрузка и кузов не одно и то же.

Ответ 2

Полезная нагрузка - это "обертка" для тела

Полезная нагрузка - это что-то одно. Полезная нагрузка на бумажном носителе - это куча газет, а полезная нагрузка HTTP POST-запроса - это то, что приходит в "тело".

Ответ 3

Обмен сообщениями между клиентом и сервером HTTP, описанный в RFC 7230: Протокол передачи гипертекста (HTTP/1.1): Синтаксис и маршрутизация сообщений определяет метаданные ресурса и метаданные представления и проводит различие между телом полезной нагрузки и телом сообщения (поскольку тело сообщения может быть закодировано для передача с кодировкой, определенной в поле заголовка Transfer-Encoding):

Большая часть HTTP-связи состоит из запроса поиска (GET) для представления некоторого ресурса, идентифицируемого URI. В простейшем случае это может быть выполнено с помощью одного двунаправленного соединения (===) между пользовательским агентом (UA) и исходным сервером (O).

     request   >
UA ======================================= O
                            <   response

Клиент отправляет HTTP-запрос на сервер в форме сообщения с запросом, начиная с строки запроса, содержащей метод, URI и версию протокола (раздел 3.1.1), за которыми следуют поля заголовка, содержащие модификаторы запроса, информацию о клиенте и метаданные представления (раздел 3.2), пустая строка для указания конца раздела заголовка и, наконец, тело сообщения, содержащее тело полезной нагрузки (если есть, раздел 3.3).

Сервер отвечает на запрос клиента, отправляя одно или несколько сообщений ответа HTTP, каждое из которых начинается со строки состояния, которая включает версию протокола, код успеха или ошибки и текстовую фразу причины (раздел 3.1.2), за которой, возможно, следуют поля заголовка содержащий информацию о сервере, метаданные ресурса и метаданные представления (раздел 3.2), пустую строку, указывающую конец раздела заголовка, и, наконец, тело сообщения, содержащее тело полезной нагрузки (если есть, раздел 3.3).

Далее в этом RFC формат сообщения HTTP (как для сообщения запроса, так и для сообщения ответа) суммируется:

Start line<CR><LF>
Header fields<CR><LF>
<CR><LF>
Message body (optional)

где <CR> - символ возврата каретки, а <LF> - символ перевода строки.

Аннотация из RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): Семантика и содержание дает определение полезной нагрузки:

Протокол передачи гипертекста (HTTP) - это протокол уровня приложения без учета состояния для распределенных, совлокальных гипертекстовых информационных систем. В этом документе определяется семантика сообщений HTTP/1.1, выраженная методами запроса, полями заголовка запроса, кодами статуса ответа и полями заголовка ответа, а также полезной нагрузкой сообщений (метаданных и основного содержимого) и механизмами согласования содержимого.

Таким образом, мы можем заключить, что полезная нагрузка HTTP состоит из:

  • метаданные, содержащиеся в полях заголовка;
  • данные, содержащиеся в теле сообщения (перед передачей кодировки).