Что такое HTTP-сущность? - PullRequest
       26

Что такое HTTP-сущность?

107 голосов
/ 08 февраля 2012

Кто-нибудь, пожалуйста, опишите мне, что такое HTTP-сущность ?

Я читаю документацию HTTPClient, но я не совсем понимаю, что это значит?

Ответы [ 8 ]

127 голосов
/ 08 февраля 2012

сущность HTTP - это большая часть HTTP-запроса или ответа, состоящая из некоторых заголовков и тела, если оно присутствует. Кажется, что это весь запрос или ответ без запроса или строки состояния (хотя только определенные поля заголовка считаются частью объекта ).

Для иллюстрации; вот запрос:

POST /foo HTTP/1.1          # Not part of the entity.
Content-Type: text/plain    # ┬ The entity is from this line down...
Content-Length: 1234        # │
                            # │
Hello, World! ...           # ┘

И ответ:

HTTP/1.1 200 OK             # Not part of the entity.
Content-Length: 438         # ┬ The entity is from this line down...
Content-Type: text/plain    # │
                            # │
Response body ...           # ┘
14 голосов
/ 23 декабря 2013

Вот 3 простых случая:

Случай 1. Вы загружаете 3 файла в одном запросе.Эти 3 файла 3 объекта.Каждый из них имеет свой собственный Content-Type, чтобы указать, что это за файл.

Случай 2. Вы просматриваете веб-страницу.Браузер загрузил HTML-файл как объект в фоновом режиме.Поскольку страница может постоянно обновляться, позже вы можете получить совершенно другую сущность.

Случай 3. У вас есть 304 Not Modified.Ни одна сущность не была передана.

Одним словом, Сущность - это дополнительная полезная нагрузка внутри сообщения http (либо запрос, либо ответ), поэтому это " part-whole *"1014 * "отношение между сущностью и сообщением.

Некоторые поля заголовка применяются к Message, например Transfer-Encoding, описывают, как передавать сообщение между посредниками, и, таким образом, МОГУТ быть добавлены или удалены любым приложением по запросу / ответуцепь (hop-by-hop headers).Для сравнения, эти поля заголовка применяются к Entity, это некоторые свойства, которые описывают размер, тип, алгоритм сжатия и т. Д. ...

Дальнейшее чтение, цитирование из RFC 2616, раздел 1.4, 4.5 и 4.3:

  • Цепочка запросов / ответов
     request chain -------------------------------------->
   UA -----v----- A -----v----- B -----v----- C -----v----- O
      <------------------------------------- response chain

На рисунке выше показаны три посредника (A, B и C) между агентом пользователя и сервером источника.Сообщение запроса или ответа, которое проходит всю цепочку, будет проходить через четыре отдельных соединения.

  • Поля заголовка для сообщения или объекта

Естьнесколько полей заголовка, которые имеют общую применимость для сообщений запроса и ответа, но которые не применяются к сущности, передаваемой .Эти поля заголовка применяются только к передаваемому сообщению .

  • Поля заголовка для сообщения могут быть изменены по цепочке

Transfer-Encoding ДОЛЖЕН использоваться для указания любых кодировок передачи, применяемых приложением, для обеспечения безопасной и правильной передачи сообщения. Transfer-Encoding - это свойство сообщения, а не сущности, и поэтому МОЖЕТ быть добавлено или удалено любым приложением в цепочке запросов / ответов.

  • Отношение между телом сообщения и телом сущности

message-body = Transfer-Encoding( Content-Encoding(entity-body) )

, где Transfer-Encoding может быть "порциями", что означает, как передавать сообщение, а Content-Encoding может быть "gzip"«Это означает, как сжать сущность.

12 голосов
/ 08 февраля 2012

Это абстракция, представляющая запрос или ответ полезная нагрузка . JavaDoc ясно о его назначении и различных типах сущностей.

6 голосов
/ 08 февраля 2012

Я думаю, HTTPClient Entity назван в соответствии с HTTP Entity .

2 голосов
/ 01 февраля 2016

HTTP - это протокол, который наблюдается при доступе к информации с удаленного компьютера через сеть. Обычно сеть - это Интернет, а удаленная машина - это сервер.

Когда вы запрашиваете информацию у человека А у человека Б, вы даете ему сообщение. (Запрос). Человек B отвечает вам (Ответ). Запрос и ответ являются типами сообщений HTTP.

Лицо А может попросить Лицу Б сделать что-то вместо того, чтобы запрашивать информацию. Скажем, Персона А хочет, чтобы Персона Б сохранила файл в безопасном месте. Таким образом, Человек А передает этот файл (Объект HTTP) Человеку B и просит его что-то сделать (Сообщение HTTP). В этом случае Персона передает «Сущность». В контексте сущности HTTP это полезная нагрузка, прикрепленная к сообщению.

Надеюсь, что аналогия помогла.

2 голосов
/ 23 марта 2015

Как сказано в комментарии @ hawkeye-parker, похоже, что Entity устарела. Сделайте поиск в этом rfc 2014 года, и вы увидите о сущностях XML и теле сообщения, но ничего о сущности Http.

Тем не менее, HttpClient, а также клиент JaxRS, имеют метод setEntity() и getEntity().

Учитывая принятый ответ, обе библиотеки ошибочны! HttpClient.setEntity() не удалит ранее установленные заголовки.

0 голосов
/ 25 ноября 2017

Среди хороших ответов, которые мы получили здесь, я полагаю, что стоит упомянуть кое-что, полученное непосредственно из RFC 2616 (протокол передачи гипертекста - HTTP / 1.1) :

Entity

Сообщения с запросами и ответами МОГУТ передавать объект, если не указано иное. ограничено методом запроса или кодом ответа. Сущность состоит из полей заголовка объекта и тела объекта, хотя некоторые ответы будут включать только заголовки объектов.

В двух словах: сущность может быть передана, и это может быть заголовок + body или просто header,

Так как есть ссылка выше, я задерживаюсь на дополнительных комментариях.

0 голосов
/ 08 февраля 2012

Объект - это что-то вроде сообщения, он состоит из заголовка, в котором находятся метаданные, такие как местоположение, язык, кодировка ...

И, необязательно, тело - его содержимое форматируется и т. Д., Как указано в заголовке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...