# HTTP съобщения

HTTP съобщенията са начинът, по който се обменят данни между сървър и клиент. Има два типа съобщения: **заявка**, изпратена от клиента за стартиране на действие от сървъра (request) и **отговор** от сървъра (response).

HTTP съобщенията са съставени от текстова информация, кодирана в ASCII, и са разположени в последователност от редове. В HTTP/1.1 и по-ранните версии на протокола тези съобщения се изпращат открито през връзката. В HTTP/2 съобщението, което някога е било четимо от човека, сега е разделено в HTTP фреймове, осигурявайки оптимизация и подобрения в производителността.

HTTP заявките и отговорите споделят подобна структура и се състоят от:

·        Начален ред (start line), описващ заявката, която трябва да бъде изпълнена, или статус за успех или неуспех по отношение на получени отговор. Тази начална линия винаги е разположена на един ред.

·        Опционален набор от HTTP хедъри, уточняващи заявката или описващи тялото, включено в съобщението.

·        Празен ред, указващ, че цялата метаинформация на заявката е изпратена.

·        Незадължително тяло, съдържащо данни, свързани със заявката (като съдържание на HTML формуляр), или документа, свързан с отговора. Наличието на тялото и неговият размер се определят от началния ред и HTTP заглавките.

Началният ред и хедърите на съобщението са общо известни като head на заявката, докато неговият payload е известен като body.

<figure><img src="https://3165743208-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUbVVR-jiMUx7iVRyw6%2Fuploads%2F5CS3gxB2AbYrlGSijh3E%2Fimage.png?alt=media&#x26;token=2a65783b-edef-426f-bb90-12ca924d9db4" alt=""><figcaption></figcaption></figure>

### Структура  на заявка

<figure><img src="https://3165743208-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUbVVR-jiMUx7iVRyw6%2Fuploads%2F5nMv0fSKk2ERZZvm727r%2Fimage.png?alt=media&#x26;token=03fb75d7-2223-48ad-bf97-502f81f8f9de" alt=""><figcaption></figcaption></figure>

Заявките се състоят от следните елементи:

·        HTTP метод, обикновено глагол като GET, POST или съществително като OPTIONS или HEAD, който дефинира операцията, която клиентът иска да изпълни. Обикновено клиентът иска да извлече ресурс (чрез GET) или да публикува данни от HTML формуляр (чрез POST).

·        Пътят на ресурса за извличане; URL адресът на ресурса, лишен от елементи, които са очевидни от контекста, например без протокола (http\://), домейна (тук developer.mozilla.org), или TCP порта (тук 80).

·        Версията на HTTP протокола.

·        Незадължителни хедъри, които предават допълнителна информация за сървърите.

·        Тяло за някои методи като POST, които съдържат изпратения ресурс.

### Структура на отговор

<figure><img src="https://3165743208-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MUbVVR-jiMUx7iVRyw6%2Fuploads%2FQK5tCmusN3deGfxZoBJd%2Fimage.png?alt=media&#x26;token=b77fc044-1309-42e7-92f2-70ca6bc0722d" alt=""><figcaption></figcaption></figure>

Отговорите се състоят от следните елементи:

·            Версията на HTTP протокола, който следват.

·            Код на състоянието, показващ дали заявката е била успешна или не и защо.

·            Съобщение за състояние, кратко описание на кода за състояние.

·            HTTP хедъри, подобни на тези на заявките.

·            Опционално тяло, съдържащо извлечения ресурс.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://programmingfundamental.gitbook.io/programmingwithjava/internet-tekhnologii-2023/laboratorno-uprazhnenie-1/http-protokol/http-sobsheniya.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
