Урок 2 из 8 · 20 мин · обновлено

HTTP: методы, адрес, заголовки и коды ответа

Из чего состоит HTTP-запрос: метод, адрес, параметры, заголовки и тело. Чем GET отличается от POST, PUT, PATCH и DELETE. Что значат коды ответа 200, 201, 400, 401, 404 и 500.

Из чего состоит запрос

Клиент и сервер общаются по протоколу HTTP — набору правил для запросов и ответов в интернете. Любой HTTP-запрос состоит из частей:

Текст
GET https://dummyjson.com/products/search?q=phone&limit=2
Accept: application/json
  • метод — что сделать: GET;
  • адрес (URL) — с чем: https://dummyjson.com/products/search;
  • параметры — уточнения после ?, в виде имя=значение через &: искать phone, вернуть 2 товара;
  • заголовки — служебная информация: какой формат ответа нужен, кто отправляет, токен для входа;
  • тело — данные, которые отправляем на сервер. У GET его нет, у POST и PUT обычно есть.

Методы

Метод Что делает Пример
GET получить данные список товаров, один товар
POST создать новое добавить товар, оформить заказ
PUT изменить целиком заменить карточку товара
PATCH изменить часть поменять только цену
DELETE удалить удалить товар из каталога

GET ничего не меняет на сервере. Его можно повторять сколько угодно — ответ будет тем же. С POST иначе: каждый повтор может создать ещё один заказ. Поэтому кнопку «Оплатить» после нажатия блокируют.

Что именно делает каждый метод, решают авторы API. Привычные правила из таблицы соблюдают большинство API, но точное поведение всегда проверяют по документации.

Ответ и коды

Ответ сервера тоже состоит из частей: код ответа, заголовки и тело с данными. Код — трёхзначное число, по первой цифре сразу понятно, что произошло:

Код Что значит Пример
200 OK всё хорошо товар найден
201 Created создано товар добавлен
400 Bad Request неверный запрос не хватает поля, неверный формат
401 Unauthorized нужна авторизация нет токена или он устарел
403 Forbidden доступ запрещён токен есть, но прав не хватает
404 Not Found не найдено товара с таким номером нет
500 Internal Server Error ошибка на сервере сервер сломался

Запомнить просто:

  • 2xx — успех;
  • 4xx — ошибка клиента: неправильный запрос, нет доступа, нет такого ресурса;
  • 5xx — ошибка сервера: запрос мог быть верным, но сервер не справился.

Для тестировщика это важно. Если на правильный запрос пришёл 500 — это баг сервера. Если на неправильный запрос, например с пустым обязательным полем, пришёл 200 — это тоже баг: сервер должен был отказать с кодом 400.

Попробуйте сами. Определите метод и ожидаемый код ответа для каждой ситуации: 1) получить корзину пользователя; 2) добавить новый адрес доставки; 3) запросить заказ с номером, которого нет; 4) открыть историю заказов без входа в аккаунт.

Ответ
  1. GET, код 200.
  2. POST, код 201 — создано. Некоторые API отвечают просто 200, это зависит от документации.
  3. GET, код 404 — не найдено.
  4. GET, код 401 — нужна авторизация.

Мини-тест: проверьте себя

Закрепите урок: несколько вопросов, разбор ответов — в конце.

  1. Каким методом получают список товаров?

  2. Сервер ответил кодом 500. Чья это, скорее всего, ошибка?

  3. Что передают параметры в адресе ...products/search?q=phone&limit=5?

  4. Чем PUT отличается от PATCH?