Презентация

HTTP и REST API: как разговаривают браузеры и серверы

Материал про базовый протокол веба: запросы, ответы, методы, коды статуса, заголовки, HTTPS и понятный взгляд на REST API.

О чем этот материал

HTTP, REST, статусы, методы, заголовки, HTTPS и путь веб-запроса.

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

Что внутри

Ниже краткий план материала. По нему удобно понять, в каком порядке разбирать тему.

  1. HTTP как основной протокол интернета
  2. REST API
  3. HTTPs
  4. Разберем вопросы

HTTP

Hyper Text Transfer Protocol - основной протокол передачи данных в интернете

Версии HTTP/0.9 ~/1.0 ~/1.1 ~/2 (возможно ~/3)

Методы: GET, POST, PUT …

Статус коды: 200, 404, 502 …

  • протокол HTTP/HTTPs
  • Доменное имя
  • Путь
  • Параметры запроса
Это базовая часть веба. Если здесь появляется ясная картинка маршрута запроса, дальше многие темы становятся заметно проще.

Methods

Указание на основную операцию над ресурсом

передачи данных на сервер.

данными из запроса.

указанного ресурса.

  • GET: Запрос на получение ресурса. Используется для запроса данных с сервера.
  • POST: Отправка данных для создания или обновления ресурса. Используется для
  • PUT: Замена или создание ресурса. Используется для замены текущего ресурса
  • DELETE: Удаление ресурса. Используется для удаления данных с сервера.
  • HEAD: Запрос аналогичен GET, но сервер должен вернуть только заголовки, без тела.
  • OPTIONS: Запрос, который возвращает методы HTTP, поддерживаемые сервером для
  • PATCH: Частичное обновление ресурса. Используется для внесения частичных

Status code

Код ответа - цифровое обозначение типа ответа, который мы получили от сервера.

Код ответа - цифровое обозначение типа ответа, который мы получили от сервера.

418 - I’m a teapot (буквально - “я - чайник”)

  • 1xx - 100, 101 - запрос получен и продолжает обрабатываться
  • 2xx - 200, 201 - запрос успешно обработан
  • 3xx - 301, 302 - переадресация (в target должен быть указан путь)
  • 4xx - 400, 401, 404 - ошибка со стороны клиента
  • 5xx - 500, 502, 503 - ошибка со стороны сервера

Headers

General Headers («Основные заголовки») — могут включаться в любое сообщение клиента и сервера;

Request Headers («Заголовки запроса») — используются только в запросах клиента;

Response Headers («Заголовки ответа») — только для ответов от сервера;

Entity Headers («Заголовки сущности») — сопровождают каждую сущность сообщения.

URL (Uniform Resource Locator)

Протокол: Указывает используемый протокол (например, http или https).

Доменное Имя: Имя сервера, на котором размещен ресурс (например, www.example.com).

Путь: Путь к ресурсу на сервере (например, /index.html).

Параметры Запроса: Дополнительные параметры, передаваемые в запросе (например, ?id=123).

HandShake

Установление TCP-соединения

Обмен HTTP-запросами и ответами

Закрытие соединения

REST (REpresentational State Transfer )

Stateless (Без состояния):

запроса.

Client-Server (Клиент-сервер):

Cacheable (Кэшируемость):

  • Каждый запрос от клиента к серверу должен содержать всю необходимую информацию для выполнения
  • Клиенты отвечают за пользовательский интерфейс - серверы отвечают за управление данными и логикой.
  • Ответы от сервера должны быть кэшируемыми, если это возможно.
  • Идентификацию ресурсов (URI)
  • HTTP: GET, POST, PUT, DELETE)
Это базовая часть веба. Если здесь появляется ясная картинка маршрута запроса, дальше многие темы становятся заметно проще.

Немного криптографии

Шифрование:

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

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

Цифровая подпись:

  • Цель: Обеспечение конфиденциальности данных.
  • Процесс: Преобразование данных в такой формат, который
  • Пример: Использование алгоритмов, таких как AES или RSA, для
  • Цель: Обеспечение подлинности и целостности данных.
  • Процесс: Создание уникального цифрового отпечатка (хеша)
  • Пример: Использование алгоритмов, таких как DSA или RSA, для

Cимметричное шифрование

  • Один ключ на все

Асимметричное шифрование

  • Публичным ключом шифруем
  • Приватным расшифровываем

HTTPs

SSL - Secure Sockets Layer - протокол безопасности для установления зашифрованных соединений.

TLS - Transport Layer Security - современный протокол, заменяющий SSL

  • Handshake
  • Проверка сертификата
  • Генерация ключей
  • Шифрование
  • Расшифровка
Это базовая часть веба. Если здесь появляется ясная картинка маршрута запроса, дальше многие темы становятся заметно проще.

Инструменты. Postman

Инструменты. Insomnia

Инструменты

Curl (cURL) - консольная утилита для выполнения HTTP запросов

Golang

“net/http"