HTTP протокол: що це, де використовується

HTTP протокол (HyperText Transfer Protocol «протокол передачі гіпертексту») – це протокол прикладного рівня гіпермедійних документів, таких як HTML. Протокол був розроблений для зв'язку між веб-браузерами і веб-серверами, але також використовується і для інших цілей. HTTP протокол використовується не тільки для передачі гіпертекстових документів, але і для передачі зображень та відео або для відправки контенту на сервери. Також HTTP використовується, щоб отримати частину документа для оновлення веб-сторінки за вимогою.

Цей протокол використовує класичну модель клієнт-сервер, при якій клієнт (веб-браузер) робить запит, сервер формує відповідь і відправляє її назад клієнту у вигляді інформації, яку ми бачимо в браузері. Також необхідно знати, що клієнт і сервер не зберігають інформацію про попередні запити. Тому кожен запит містить всю необхідну інформацію.

Між клієнтом і сервером існує безліч сутностей, які називаються проксі. Вони виконують різні операції і виступають, наприклад, в якості шлюзів або кешів.

Схема взаємодії клієнта та сервера, використовуючи шлюзи

Браузер завжди є ініціатором запитів. Щоб веб-сторінка відобразилася на екрані, він відправляє вихідний запит на отримання HTML-документа. Потім відбувається аналіз файлу, за допомогою додаткових запитів, відповідних до сценаріїв виконання. Далі браузер компонує отримані ресурси і відображає цілісний документ (в даному випадку – веб-сторінку). Сценарії, що виконуються браузером, можуть отримувати більше ресурсів на більш пізніх етапах, тому відбувається оновлення веб-сторінки.

На протилежному боці каналу зв'язку знаходиться сервер, який обробляє документи за запитом клієнта (в даному випадку – браузера). Сервер віртуально виглядає як одна машина. Але насправді, це може бути набір серверів, які розділяють навантаження, повністю або частково генеруючи документ за запитом.

Запити та відповіді: їх структура, формування і методи  

Запити та відповіді формуються в суворій послідовності і відповідають певній структурі.

Структура HTTP-запиту

Між заголовком і тілом обов'язково повинен бути порожній рядок, який слугує роздільником.

Коли запит надсилається на сервер, сервер відправляє відповідь. Відповідь від сервера повідомляє, чи був запит успішним або ні. Відповіді складаються з наступних компонентів:

  • код статусу (вказує був запит успішним чи ні);
  • HTTP заголовки;
  • тіло, що містить вилучений ресурс

HTTP використовує спеціальні методи запиту для виконання різних завдань:

  • GET – запитує певні дані з бази даних;
  • HEAD – запитує певний ресурс без змісту тіла;
  • POST – додає вміст, повідомлення або дані в базу даних;
  • PUT – замінює запис, що існує, на новий;
  • DELETE – позбавляється від даних;
  • TRACE – показує будь-які внесені зміни до веб-ресурсу;
  • PATCH – частково змінює запис;
  • OPTIONS – показують, які HTTP-методи доступні для конкретної URL-адреси;
  • CONNECT – перетворює запитові з'єднання у прозорий TCP/IP тунель.

Метод запиту визначає дію, яку потрібно виконати на ресурсі. Він чутливий до регістру і вказується тільки великими літерами.

Яким чином тестуються HTTP протоколи

На даний момент дуже багато компаній перейшло на мікросервіси у своїх додатках. Це означає, що додатки складаються з різних секцій, у яких є свої сховища даних, і використовують різні команди для взаємодії з ними.

Більшість мікросервісов використовують API, а API використовує REST-запити і SOAP-запити. Саме їх і треба тестувати. Давайте розберемо це більш детально.

API (Application Programming Interface «інтерфейс програмування додатка») – це інтерфейс взаємодії між програмою і сервером. Він використовується для отримання доступу до функціоналу сторонньої програми, сайту тощо.

SOAP-запит (Simple Object Access Protocol) – легкий протокол для обміну інформацією в розподіленому обчислювальному середовищі.

REST-запит (Representational State Transfer) – архітектурний стиль побудови веб-додатків.

Різниця між ними полягає в тому, що SOAP – це сімейство протоколів і стандартів, що працює з операціями, а REST – це архітектурний стиль, який працює з ресурсами. Також REST є більш популярним і більш вільним архітектурним стилем. Він спирається на стандартні методи (GET, POST, DELETE та ін.). У свою чергу SOAP має більш чітку документацію, чітку структуру того, як повинен виглядати запит

Запити тестуються як мануально, так і автоматизовано. Автоматизоване тестування частіше використовується для тестування великих систем.

Коли ми передаємо дані, то використовуємо два формати – це <xml /> і JSON. <Xml /> – є мовою розмітки, яка використовується для того, щоб відправляти і отримувати дані. JSON є більш зрозумілим для рядового користувача і використовується тільки для REST-запитів.

На сьогодні виділяють два найпопулярніших інструмента для вивчення REST-запитів – це Swagger і Postman. Завдяки цим програмам легко побачити, які типи запитів дозволяє ваш API і який тип параметрів очікують ці запити. Для тестування SOAP-запитів використовується SoapUI – це досить складний у використанні інструмент і необхідно добре його вивчити перед використанням.

HTTP є розширюваним протоколом, досить простим у використанні. Структура клієнт-сервер у поєднанні з можливістю простого додавання заголовків дозволяє HTTP розвиватися разом із розширенням можливостей WEB. Також за допомогою тестування API можна протестувати багато сценаріїв, які не можна протестувати через призначений для користувача інтерфейс. Цю стратегію можна використовувати для пошуку недоліків дизайну і безпеки на ранніх стадіях розробки.