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

Отправка данных и авторизация по токену

Как отправить данные на сервер методами POST, PUT, PATCH и DELETE, оформить тело запроса в JSON, войти в API и передавать токен в заголовке Authorization.

Тело запроса

Чтобы создать или изменить данные, их нужно отправить на сервер. Для этого у запроса есть тело (body). Создадим товар:

  1. Новый запрос «Создать товар», метод POST, адрес https://dummyjson.com/products/add.
  2. Вкладка Body → raw → в выпадающем списке справа выберите JSON.
  3. Вставьте тело и нажмите Send:
JSON
{
  "title": "Капучино",
  "price": 220
}
JSON
{
  "id": 195,
  "title": "Капучино",
  "price": 220
}

Код ответа — 201 Created: товар создан, сервер присвоил ему номер 195.

Выбрав тип JSON, Postman сам добавил заголовок Content-Type: application/json. Он говорит серверу, в каком формате тело. Если заголовок не совпадает с содержимым, многие серверы ответят ошибкой 400 или 415.

Учебный API только имитирует изменения: ответ правдоподобный, но товар на самом деле не сохранится, и GET /products/195 вернёт 404. В рабочих системах изменения настоящие — поэтому тестируют на специальных тестовых серверах, а не на боевом.

Изменить и удалить

Текст
PUT https://dummyjson.com/products/1
JSON
{ "price": 12.5 }

Сервер вернёт товар с новой ценой и кодом 200. В этом API PUT и PATCH работают одинаково — меняют только переданные поля. В других API PUT может требовать объект целиком, это всегда смотрят в документации.

Текст
DELETE https://dummyjson.com/products/1

В ответе учебного API товар придёт с полями "isDeleted": true и датой удаления deletedOn.

Авторизация: вход и токен

Большая часть API закрыта: чужую корзину или заказы посмотреть нельзя. Обычно устроено так:

  1. Клиент отправляет логин и пароль — один раз.
  2. Сервер проверяет их и выдаёт токен — длинную строку, временный пропуск.
  3. Во всех следующих запросах клиент показывает токен вместо пароля.

Учебный API выдаёт токен тестовому пользователю — эти логин и пароль опубликованы в его документации:

Текст
POST https://dummyjson.com/auth/login
JSON
{
  "username": "emilys",
  "password": "emilyspass"
}

В ответе — accessToken: строка из трёх частей через точку, начинается с eyJ. Это формат JWT. Токен живёт ограниченное время — по умолчанию около часа, потом нужно войти снова.

Если ошибиться в пароле, учебный API ответит 400 и сообщением Invalid credentials. Многие API в таком случае отвечают 401 — какой код правильный для конкретного API, написано в его документации.

Передать токен

Закрытый эндпоинт GET https://dummyjson.com/auth/me возвращает данные текущего пользователя. Без токена:

JSON
{ "message": "Access Token is required" }

Код — 401 Unauthorized. Чтобы пройти:

  1. Откройте вкладку Authorization запроса.
  2. Тип — Bearer Token.
  3. В поле Token вставьте accessToken из ответа на вход.

Postman добавит заголовок:

Текст
Authorization: Bearer eyJhbGciOiJIUzI1NiIs…

Теперь сервер вернёт 200 и данные пользователя: имя Emily, фамилию, email.

Токен — такой же секрет, как пароль. Его не публикуют в чатах и баг-репортах: в скриншоте и в команде curl его заменяют на <token>.

Попробуйте сами. Проверьте три сценария входа и запишите, какой код и ответ вернёт каждый: правильный логин и пароль; правильный логин и неверный пароль; запрос без тела.

Ответ
Сценарий Код Ответ
Верные данные 200 accessToken, refreshToken и данные пользователя
Неверный пароль 400 {"message": "Invalid credentials"}
Без тела 400 сообщение, что нужны логин и пароль

Это и есть негативные проверки — что делает API с неправильными данными. Хороший API отказывает понятно и не выдаёт лишнего: например, не сообщает, что именно неверно — логин или пароль. Иначе злоумышленник сможет перебором узнать существующие логины.

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

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

  1. Где в Postman задают данные для POST-запроса в формате JSON?

  2. Что такое токен в API?

  3. Запрос к /auth/me без токена вернул 401. Это ошибка API?