8.4 KiB
Содержание
Введение
В основном все держится на 4 вещах:
- Hypertext Transfer Protocol (HTTP) - предназначен для передачи гипертекста между клиентом и сервером
- Hypertext Markup Language (HTML) - язык разметки гипертекста
- Cascade StyleSheets (CSS) - язык описания внешнего вида HTML-документов
- JavaScript - язык для написания динамических сценариев, выполняемых на стороне клиента
Клиент-серверное взаимодействие. Протокол HTTP.
HTTP
Сам по себе HTTP - протокол прикладного уровня. В его основе лежит технология "клиент-сервер". Он может использоваться в качестве "транспорта" для других протоколов прикладного уровня. Основной объект манипуляций этого протокола - ресурс, на который указывает URI. Обмен сообщениями в этом протоколе идет по схеме "запрос-ответ". Сам по себе протокол не сохраняет состояние (stateless-протокол), поэтому для реализации сессий используется cookies.
Структура запроса HTTP
Первая строка запроса HTTP является стартовой, в ней содержится основное описание необходимого действия (команда). При ее составлении через пробел указывают три основные для протокола вещи: метод, URI и версию протокола HTTP (в формате HTTP/Версия).
За первой строкой следует следующий раздел - заголовки. Этот раздел содержит, как ни странно, заголовки.
Последним разделом запроса является тело сообщения. Чаще всего в запросе тело остается пустым. В теле сообщения может находится что угодно, что необходимо передать с помощью протокола на другую сторону. Вся информация о теле, необходимая другой стороне, должна быть указана в заголовках.
Структура ответа HTTP
Ответ мало чем отличается от запроса. Единственным отличием является стартовая строка. Эта строка составляется тем же образом, что и стартовая строка запроса, перечисляя через пробел основную информацию запроса: версию протокола HTTP (в формате HTTP/Версия), код состояния и пояснение кода состояния. По сути, в пояснении можно указать что угодно, но лучше придерживаться стандартных шаблонов сообщений.
Методы HTTP
Методов HTTP довольно много, поэтому перечислим только используемые чаще всего.
- OPTIONS - определение возможностей сервера
- GET - получение данных с ресурса (запрос содержимого ресурса)
- HEAD - аналог GET, но в ответе не передается (отсутствует) тело
- POST - передача данных ресурсу
- PUT - загрузка содержимого запроса на указанный URI
- DELETE - удаление данных с сервера
Коды состояния
Коды состояния в основном состоят из трёх цифр. Все коды состояния делятся на 5 классов, в соответствии с которыми ставится первая цифра кода.
- 1 - Informational - информационный
- 2 - Success - успешно
- 3 - Redirection - перенаправление
- 4 - Client error - ошибка клиента
- 5 - Server error - ошибка сервера
Заголовки HTTP
Заголовки используются для передачи определенных значений с помощью протокола. В некотором роде, можно думать о заголовках как о входящих переменных. Все они передаются в формате ключ:значение.
Заголовки делятся на 4 группы:
- General Headers - могут включаться в любое сообщение клиента и сервера
- Request Headers - используется только в запросах клиента
- Response Headers - используется только в запросах сервера
- Entity Headers - сопровождают любую сущность сообщения
URI, URN и URL
URI (Uniform Resource Identifier) - уникальный идентификатор ресурса - символьная строка, позволяющая идентифицировать ресурс. Строится по форме <схема>:<идентификатор>. Идентификатор определяется в зависимости от схемы.
URL (Uniform Resource Locator) - URI, позволяющий определить местоположение ресурса. Может представлять из себя абсолютную ссылку (https://), относительную ссылку (../task.html) и тп.
URN (Uniform Resource Name) - URI, содержащий единообразное имя ресурса (не указывает на его местонахождение). Строится по способу, подобному URI, но начинается с urn, и только после него идет уже сама схема с идентификатором.
REST
REST (Representation State Transformer) - передача состояния представления - подход к архитектуре сетевых протоколов, обеспечивающих доступ к информационным ресурсам. Он описывает взаимодействие между клиентом и сервером, а также между front-end и back-end частями.
Основные концепции REST:
- данные должны передаваться в виде небольшого числа стандартных форматов (к примеру, HTML, XML, JSON)
- сетевой протокол должен поддерживать кеширование, не должен зависеть от сетевого слоя, не должен сохранять информацию о состоянии между парами "запрос-ответ"
Существует подход, противоположный REST, который основан на вызове удаленных процедур (RPC - Remote Process Call).