Урок 5 из 8 · 20 мин · обновлено
Отправка данных и авторизация по токену
Как отправить данные на сервер методами POST, PUT, PATCH и DELETE, оформить тело запроса в JSON, войти в API и передавать токен в заголовке Authorization.
Тело запроса
Чтобы создать или изменить данные, их нужно отправить на сервер. Для этого у запроса есть тело (body). Создадим товар:
- Новый запрос «Создать товар», метод POST, адрес
https://dummyjson.com/products/add. - Вкладка Body → raw → в выпадающем списке справа выберите JSON.
- Вставьте тело и нажмите Send:
{
"title": "Капучино",
"price": 220
}
{
"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
{ "price": 12.5 }
Сервер вернёт товар с новой ценой и кодом 200. В этом API PUT и PATCH работают одинаково — меняют только переданные поля. В других API PUT может требовать объект целиком, это всегда смотрят в документации.
DELETE https://dummyjson.com/products/1
В ответе учебного API товар придёт с полями "isDeleted": true и датой удаления deletedOn.
Авторизация: вход и токен
Большая часть API закрыта: чужую корзину или заказы посмотреть нельзя. Обычно устроено так:
- Клиент отправляет логин и пароль — один раз.
- Сервер проверяет их и выдаёт токен — длинную строку, временный пропуск.
- Во всех следующих запросах клиент показывает токен вместо пароля.
Учебный API выдаёт токен тестовому пользователю — эти логин и пароль опубликованы в его документации:
POST https://dummyjson.com/auth/login
{
"username": "emilys",
"password": "emilyspass"
}
В ответе — accessToken: строка из трёх частей через точку, начинается с eyJ. Это формат JWT. Токен живёт ограниченное время — по умолчанию около часа, потом нужно войти снова.
Если ошибиться в пароле, учебный API ответит 400 и сообщением Invalid credentials. Многие API в таком случае отвечают 401 — какой код правильный для конкретного API, написано в его документации.
Передать токен
Закрытый эндпоинт GET https://dummyjson.com/auth/me возвращает данные текущего пользователя. Без токена:
{ "message": "Access Token is required" }
Код — 401 Unauthorized. Чтобы пройти:
- Откройте вкладку Authorization запроса.
- Тип — Bearer Token.
- В поле Token вставьте
accessTokenиз ответа на вход.
Postman добавит заголовок:
Authorization: Bearer eyJhbGciOiJIUzI1NiIs…
Теперь сервер вернёт 200 и данные пользователя: имя Emily, фамилию, email.
Токен — такой же секрет, как пароль. Его не публикуют в чатах и баг-репортах: в скриншоте и в команде curl его заменяют на <token>.
Попробуйте сами. Проверьте три сценария входа и запишите, какой код и ответ вернёт каждый: правильный логин и пароль; правильный логин и неверный пароль; запрос без тела.
Ответ
| Сценарий | Код | Ответ |
|---|---|---|
| Верные данные | 200 |
accessToken, refreshToken и данные пользователя |
| Неверный пароль | 400 |
{"message": "Invalid credentials"} |
| Без тела | 400 |
сообщение, что нужны логин и пароль |
Это и есть негативные проверки — что делает API с неправильными данными. Хороший API отказывает понятно и не выдаёт лишнего: например, не сообщает, что именно неверно — логин или пароль. Иначе злоумышленник сможет перебором узнать существующие логины.
Мини-тест: проверьте себя
Закрепите урок: несколько вопросов, разбор ответов — в конце.
-
Где в Postman задают данные для POST-запроса в формате JSON?
Тело запроса — вкладка Body. Режим raw с типом JSON сам добавит заголовок Content-Type: application/json.
-
Что такое токен в API?
Пароль отправляют один раз при входе, а дальше вместо него показывают токен. Он ограничен по времени и его можно отозвать.
-
Запрос к /auth/me без токена вернул 401. Это ошибка API?
401 — «нужна авторизация». Наоборот, если бы сервер отдал данные пользователя без токена, это была бы серьёзная уязвимость.