# БИБЛИОТЕКА ..Курсы ..Redmine Системная инженерия Стейкхолдеры Управление Критическая цепь Linux Информация Социальные связи Саморазвитие Логика, интеллект Политэкономия Сумма технологии АНАЛИТИКА ..Ресурсы ..ПО для Аналитика ..Кто аналитики? ..Бизнес-процесс ..Требования ..Уровни и типы ..Источники Нотации Архитектура РАЗРАБОТКА ..Ресурсы ..Цикл разработки ПО ..Waterfall ..RUP ..Agile ..Kanban ..Continuous Integration git Frontend HTTP/REST Apache web-server Регулярные выражения Javascript Perl ТЕСТИРОВАНИЕ ..Ресурсы ..QA и QC ..Цикл тестирования ..1 Тест-анализ ..2 Тест план ..3 Тест-дизайн и покрытие ..Уровни тестирования ..Виды тестирования ..Баг-репорт ..Шаблоны документов XPATH Безопасность Нагрузочное Android Автоматизация Selenium WebDriver Генератор ИНН БАЗЫ ДАННЫХ SQL MongoDB
Эта страница:
ПО-инструменты для тестирования Базовые понятия Основы HTTP Основы REST
Ещё в этом разделе:
РАЗРАБОТКА Фронтенд HTTP/REST основы Apache web-server Регулярные выражения git Javascript Perl Python Ruby Rust Полезности в Windows
Другие разделы:
# АНАЛИТИКА MONGO DB SQL РАЗРАБОТКА БИБЛИОТЕКА ТЕСТИРОВАНИЕ
Что такое HTTP/REST
ПО-инструменты для тестирования
Базовые понятия

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

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

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

  • прикладной уровень (application layer): HTTP, FTP, HTTPS, DHCP, IMAP, IRC, NTP, POP3, Telnet, SSH, DNS (преобразование символьных имён в IP-адреса, IP-адрес - уникальный сетевой адрес узла в компьютерной сети, построенной по протоколу IP);
    The protocols used by host processes to communicate over the network. The application may be architected as a client-server system, or as a peer-to-peer system. At this layer, usually, a human readable hostname (e.g. www) and domain name (e.g. acme.com) are combined to into a fully qualified name (i.e. www.acme.com) to identify the host.
  • транспортный уровень (transport layer): UDP, TCP (в отличие от UDP гарантирует целостность передаваемых данных и уведомление отправителя о результатах передачи: делает повторный запрос в случае утери данных, устраняет дублирование при получении двух копий одного пакета), SCTP, DCCP;
     The protocols with which hosts can communicate end-to-end, and make corrections for packets lost in the underlying network. The most used protocols are the connection-oriented Transport Control Protocol (TCP) and the connectionless Unified Datagram Protocol (UDP). At this layer, a logical ‘port number’ is used to identify a specific communication end-point.
  • сетевой уровень (Internet layer): Для TCP/IP это IP;
     The Internet Protocol (IP) specifies the common connectionless protocol that provides best effort packet delivery across network boundaries. Best effort implies packets may be lost, corrupted, delivered out of order, or in some cases, duplicated. The two basic functions of this protocol are to identify hosts using their IP Address; and to set up routing tables to determine how packets should be forwarded between nodes.
  • канальный уровень (link layer): Ethernet, IEEE 802.11 Wireless Ethernet, SLIP, Token Ring, ATM и MPLS, T1, E1;
     The medium specific protocols that concerns with communicating with neighbouring hosts on the same local network without any intervening routers or gateways. E.g. the Address Resolution Protocol and the Point-to-Point Protocol. At this layer, nodes are identified by a physical address -- typically the MAC (Medium Access Control) address.

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

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

Основы HTTP

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

Общая структура запроса:

Общая структура ответа:

Обычный 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)

Методы HTTP-протокола

HTTP-протокол оперирует методами 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

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

HTTP CRUD Примеры запросов Ответы для всей коллекции
(/customers)
Ответы для конкретного ID
(/customers/{id})
POST Create
POST http://site.com/customers
POST http://site.com/customers/123/orders
201 (Created), 'Location' header со ссылкой на /customers/{id} содержащей новый ID 404 (Not Found),
409 (Conflict) если ресурс уже существует
GET Read
GET http://site.com/customers/123
GET http://site.com/customers/123/orders
GET http://site.com/buckets/sample
200 (OK), список Клиентов 200 (OK).
404 (Not Found) если ID не найден или неправилен
PUT Update
/Replace
PUT http://site.com/customers/123
PUT http://site.com/customers/123/orders/98765
PUT http://site.com/buckets/secret_stuf
405 (Method Not Allowed), разве только вы не захотите обновить/заменить каждый ресурс во всей коллекции 200 (OK) или 204 (No Content).
404 (Not Found) если ID не найден или неправилен
PATCH Update
/Modify
PATCH http://site.com/customers/123
PATCH http://site.com/customers/123/orders/98765
PATCH http://site.com/buckets/secret_stuff
405 (Method Not Allowed), раазве только вы не заходите изменить саму коллекцию 200 (OK) или 204 (No Content).
404 (Not Found) если ID не найден или неправилен
DELETE Delete
DELETE http://site.com/customers/123
DELETE http://site.com/customers/123/orders
DELETE http://site.com/bucket/sample
405 (Method Not Allowed), разве только вы не захотите удалить всю коллекцию. 200 (OK).
404 (Not Found) если ID не найден или неправилен