Канал для начинающих карьеру системных аналитиков. Влюбиться в системый анализ и начать свой путь в IT можно здесь! 🚀
Для опытных аналитиков - Навыки • БД • Интеграции • API:
t.me/getanalysts
Обучение:
https://getanalyst.ru/education
Post #3033
550
🔥 10 спорных вопросов по REST API, ответы на которые важны для работы и собеседований 🔥 [ЧАСТЬ 2]
Проверьте себя 👇
Сначала ответьте на вопросы, потом раскройте ответы.
Считайте итоговый балл вместе с частью 1 в предыдущем посте.
7️⃣ Может ли POST быть идемпотентным?
Конкретная операция — может, если сделать идемпотентность искусственно, через алгоритм работы метода и проверку дубликатов.
Сам метод POST по стандартной семантике идемпотентным не считается (подробнее тут).
Например, повторное создание платежа можно защитить с помощью:
▫️ Idempotency-Key - ключа идемпотентности
▫️ уникального идентификатора операции
▫️ бизнес-ключа заказа, который будет проверяться
▫️ проверки ранее созданного результата
POST /payments
Idempotency-Key: payment-order-123
При повторном запросе сервер не создаёт второй платёж, а возвращает результат первой операции.
Но эту гарантию необходимо явно описать в контракте API и спроектировать в алгоритме.
Без этого операция выполнится несколько раз и создаст несколько платежей.
8️⃣ Чем статус HTTP-401 отличается от 403?
401 Unauthorized — клиент не прошёл аутентификацию:
▫️ неверная пара логин+пароль
▫️ токен отсутствует
▫️ токен недействителен
▫️ токен истёк
403 Forbidden — сервер понял запрос, но не разрешает выполнить операцию из-за отсуствия прав доступа. Это ошибка авторизации.
Например, пользователь авторизован, но у него нет роли администратора.
В отдельных системах вместо 403 могут намеренно возвращать 404 (не найдено, нет данных), чтобы не раскрывать существование защищённого ресурса.
9️⃣ PUT используется только для обновления существующего объекта?
Нет.
PUT означает создание или полную замену состояния ресурса по известному клиенту URI.
Пример:
PUT /users/9991112233 - создать или изменить пользователя
В зависимости от контракта сервер может:
▫️ заменить существующий ресурс
▫️ создать его, если ресурса ещё нет
▫️ запретить создание и вернуть ошибку
Для частичного изменения обычно используется PATCH.
🔟 Некорректное значение поля: 400 или 422?
Клиент отправил корректный JSON:
Какой HTTP-статус вернуть?
Возможны оба варианта в зависимости от принятого стандарта API внутри проекта.
400 Bad Request — неверный формат — часто используют для любых ошибок входных данных:
▫️ некорректный JSON
▫️ отсутствующее обязательное поле
▫️ неправильный формат
▫️ недопустимое значение
422 Unprocessable Content — ошибка бизнес-логики — точнее показывает, что:
▫️ JSON синтаксически корректен
▫️ сервер понял структуру запроса
▫️ но не может обработать данные из-за нарушения правил валидации
Например, возраст не может быть отрицательным.
Это может быть как ошибкой формата, так и ошибкой бизнес-логики.
Главное — не выбирать код заново для каждого метода, а зафиксировать единый подход в корпоративном гайде по API.
=========================
Сколько ответов у вас совпало?
😱 0–3
👍 4–6
🔥 7–8
🦄 9–10
Если есть вопросы или нужны доп. примеры, буду рада помочь разобраться в комментариях.
=========================
📚 Дополнительный разбор спорных вопросов по REST API
Статья была опубликована в 2023 году, поэтому нового метода QUERY в ней ещё нет. Но остальные вопросы всё ещё регулярно встречаются на проектах и собеседованиях.
Сохраняйте, точно пригодится перед следующим техническим интервью 💙
#hardGetAnalyst
Проверьте себя 👇
Сначала ответьте на вопросы, потом раскройте ответы.
Считайте итоговый балл вместе с частью 1 в предыдущем посте.
7️⃣ Может ли POST быть идемпотентным?
Конкретная операция — может, если сделать идемпотентность искусственно, через алгоритм работы метода и проверку дубликатов.
Сам метод POST по стандартной семантике идемпотентным не считается (подробнее тут).
Например, повторное создание платежа можно защитить с помощью:
▫️ Idempotency-Key - ключа идемпотентности
▫️ уникального идентификатора операции
▫️ бизнес-ключа заказа, который будет проверяться
▫️ проверки ранее созданного результата
POST /payments
Idempotency-Key: payment-order-123
При повторном запросе сервер не создаёт второй платёж, а возвращает результат первой операции.
Но эту гарантию необходимо явно описать в контракте API и спроектировать в алгоритме.
Без этого операция выполнится несколько раз и создаст несколько платежей.
8️⃣ Чем статус HTTP-401 отличается от 403?
401 Unauthorized — клиент не прошёл аутентификацию:
▫️ неверная пара логин+пароль
▫️ токен отсутствует
▫️ токен недействителен
▫️ токен истёк
403 Forbidden — сервер понял запрос, но не разрешает выполнить операцию из-за отсуствия прав доступа. Это ошибка авторизации.
Например, пользователь авторизован, но у него нет роли администратора.
В отдельных системах вместо 403 могут намеренно возвращать 404 (не найдено, нет данных), чтобы не раскрывать существование защищённого ресурса.
9️⃣ PUT используется только для обновления существующего объекта?
Нет.
PUT означает создание или полную замену состояния ресурса по известному клиенту URI.
Пример:
PUT /users/9991112233 - создать или изменить пользователя
В зависимости от контракта сервер может:
▫️ заменить существующий ресурс
▫️ создать его, если ресурса ещё нет
▫️ запретить создание и вернуть ошибку
Для частичного изменения обычно используется PATCH.
🔟 Некорректное значение поля: 400 или 422?
Клиент отправил корректный JSON:
POST /users
Content-Type: application/json
{
"email": "anna@example.com",
"age": -5
}
Какой HTTP-статус вернуть?
Возможны оба варианта в зависимости от принятого стандарта API внутри проекта.
400 Bad Request — неверный формат — часто используют для любых ошибок входных данных:
▫️ некорректный JSON
▫️ отсутствующее обязательное поле
▫️ неправильный формат
▫️ недопустимое значение
422 Unprocessable Content — ошибка бизнес-логики — точнее показывает, что:
▫️ JSON синтаксически корректен
▫️ сервер понял структуру запроса
▫️ но не может обработать данные из-за нарушения правил валидации
Например, возраст не может быть отрицательным.
Это может быть как ошибкой формата, так и ошибкой бизнес-логики.
Главное — не выбирать код заново для каждого метода, а зафиксировать единый подход в корпоративном гайде по API.
=========================
Сколько ответов у вас совпало?
😱 0–3
👍 4–6
🔥 7–8
🦄 9–10
Если есть вопросы или нужны доп. примеры, буду рада помочь разобраться в комментариях.
=========================
📚 Дополнительный разбор спорных вопросов по REST API
Статья была опубликована в 2023 году, поэтому нового метода QUERY в ней ещё нет. Но остальные вопросы всё ещё регулярно встречаются на проектах и собеседованиях.
Сохраняйте, точно пригодится перед следующим техническим интервью 💙
#hardGetAnalyst
- ❤ 7



















