# БИБЛИОТЕКА Статистика Требования в проектах Redmine Управление Стейкхолдеры Информация Саморазвитие Логика, интеллект Социальные связи Экономика и общество ТЕСТИРОВАНИЕ Книги и ссылки QA и QC Этапы тестирования Тест план Тестовые случаи Баг-репорт Метрики Уровни тестирования Виды тестирования Шаблоны документов XPATH Безопасность Нагрузочное Android Автоматизация Selenium WebDriver Генератор ИНН и т.п. РАЗРАБОТКА Ресурсы Цикл разработки ПО Continuous Integration OOP - базис Frontend HTTP/REST основы Apache web-server Регулярные выражения git Javascript Perl Python Ruby Rust Полезности в Windows LINUX Ресурсы права, юзеры и группы crontab IP tables SSH консоль (терминал) tips & tricks useful apps БАЗЫ ДАННЫХ SQL MongoDB
Эта страница:
- Инструменты для тестирования - Основы HTTP/REST - Пример диалогов HTTP
Этот раздел:
РАЗРАБОТКА Фронтенд HTTP/REST основы Apache web-server Регулярные выражения git Javascript Perl Python Ruby Rust Полезности в Windows
Разделы:
# MONGO DB SQL РАЗРАБОТКА БИБЛИОТЕКА LINUX ТЕСТИРОВАНИЕ
Что такое HTTP/REST
Инструменты для тестирования
  • Postman - расширения для Google Chrome
  • cURL - инструмент для командной строки
  • SoapUI - GUI-инструмент для тестирования REST/SOAP
Основы HTTP/REST

Интерфейс - в информатике рассматривается как общая граница двух отдельно существующих составных частей, посредством которой они обмениваются информацией в режиме одновременности. Этот обмен может быть, как двусторонним, так и односторонним.
Протокол - набор соглашений интерфейса логического уровня. Эти соглашения задают единообразный способ передачи сообщений и обработки ошибок при взаимодействии программного обеспечения разнесённой в пространстве аппаратуры, соединённой тем или иным интерфейсом.

TCP/IP - набор сетевых протоколов передачи данных. Стек протоколов TCP/IP включает в себя четыре уровня:

  • прикладной уровень (application layer): HTTP, FTP, HTTPS, DHCP, IMAP, IRC, NTP, POP3, Telnet, SSH, DNS (преобразование символьных имён в IP-адреса, IP-адрес - уникальный сетевой адрес узла в компьютерной сети, построенной по протоколу IP);
  • транспортный уровень (transport layer): UDP, TCP (в отличие от UDP гарантирует целостность передаваемых данных и уведомление отправителя о результатах передачи: делает повторный запрос в случае утери данных, устраняет дублирование при получении двух копий одного пакета), SCTP, DCCP;
  • сетевой уровень (Internet layer): Для TCP/IP это IP;
  • канальный уровень (link layer): Ethernet, IEEE 802.11 Wireless Ethernet, SLIP, Token Ring, ATM и MPLS, T1, E1;
модель OSI в сравнении с моделью TCP/IP

URL состоит из протокола (protocol), хоста (host), пути (path), запроса (query) и фрагмента. Путь используется для организации иерархических ресурсов, запрос — для неиерархических ресурсов и для параметров операции. Фрагмент идентифицирует подчинённый ресурс, не имеющий прямого URL, обычно это якорная ссылка на странице.

Protocol    Host                 Path               Query      Fragment
  ↓           ↓                    ↓                  ↓            ↓
http://nyashnye-kotiki.xxx/breeds/maine-coon/?deliver_to=Moscow#photo

HTTP (HyperText Transfer Protocol — “протокол передачи гипертекста”) — прикладной протокол передачи данных. Основой HTTP является технология "клиент-сервер", то есть предполагается существование потребителей (клиентов), которые инициируют соединение и посылают запрос, и поставщиков (серверов), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом.

    Каждое HTTP-сообщение состоит из трёх частей, которые передаются в указанном порядке:
  1. Стартовая строка (Starting line) — определяет тип сообщения, является обязательным элементом сообщения;
  2. Заголовки (Headers) — характеризуют тело сообщения, параметры передачи и прочие сведения;
  3. Тело сообщения (Message Body) — непосредственно данные сообщения. Обязательно должно отделяться от заголовков пустой строкой.

Стартовая строка для запроса (от клиента): <method> URI HTTP/<version> Пример: GET /path/resource?param1=value1&param2=value2 HTTP/1.1
Стартовая строка для ответа (от сервера): HTTP/<version> <КодСостояния> <Пояснение> Пример: HTTP/1.0 200 OK
Протокол оперирует методами OPTIONS, GET, HEAD, POST, PUT, PATCH, DELETE, TRACE, CONNECT.

GET - используется для запроса содержимого указанного ресурса.
Клиент может передавать параметры выполнения запроса прямо в стартовой строке запроса в URI целевого ресурса после символа "?": GET /path/resource?param1=value1&param2=value2 HTTP/1.1

HEAD - синонимичен по семантике методу GET, но не возвращает тело ответа, а только его заголовки (метаинформацию о ресурсе).

POST - применяется для передачи пользовательских данных заданному ресурсу. Например, в блогах посетители обычно могут вводить свои комментарии к записям в HTML-форму, после чего они передаются серверу методом POST и он помещает их на страницу. При этом передаваемые данные включаются в тело запроса. Аналогично с помощью метода POST обычно загружаются файлы на сервер. Сервер уже сам решает что с вашими данными делать. POST forum.com/threads/gameofthrones/messages Обратите внимание, если вы по ошибке или вследствие сетевых проблем повторите POST запрос — создастся второе сообщение в треде, идентичное первому.

PUT - Применяется для загрузки содержимого запроса на конкретный указанный в запросе URI. Если по заданному URI не существует ресурс, то сервер создаёт его и возвращает статус 201 (Created). Если же был изменён ресурс, то сервер возвращает 200 (Ok) или 204 (No Content). PUT forum.com/threads/gameofthrones/messages/100500 PUT вы можете делать хоть 500 раз, в нашем примере - форумный пост всё равно будет один. Это свойство называется идемпотентностью.
PUT может использоваться как для создания новых ресурсов, так и для обновления старых. Однако в случае использования PUT для перезаписи предполагается, что в теле запроса передаётся закодированный ресурс целиком.

Фундаментальное различие методов POST и PUT заключается в понимании предназначений URI ресурсов. Метод POST предполагает, что по указанному URI будет производиться обработка передаваемого клиентом содержимого. Используя PUT, клиент предполагает, что загружаемое содержимое соответствует находящемуся по данному URI ресурсу.

REST (Representational State Transfer — “передача репрезентативного состояния”) — метод взаимодействия компонентов распределённого приложения в сети Интернет, при котором вызов удалённой процедуры представляет собой обычный HTTP-запрос (обычно GET или POST; такой запрос называют REST-запрос), а необходимые данные передаются в качестве параметров запроса. Мы не заворачиваем данные в XML, как это делает SOAP и XML-RPC, не используем AMF, как это делает Flash и т.д. Просто отдаем сами данные. Системы, поддерживающие REST, называются RESTful-системами.

Подробнее тут:

Пример диалогов HTTP

Обычный GET-запрос.
Запрос клиента: GET /wiki/страница HTTP/1.1 Host: ru.wikipedia.org User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5 Accept: text/html Connection: close (пустая строка) Ответ сервера: HTTP/1.1 200 OK Date: Wed, 11 Feb 2009 11:20:59 GMT Server: Apache X-Powered-By: PHP/5.2.4-2ubuntu5wm1 Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT Content-Language: ru Content-Type: text/html; charset=utf-8 Content-Length: 1234 Connection: close (пустая строка) (далее следует запрошенная страница в HTML)