Выбор ответа Senior REST API и OpenAPI обновлено
Долгая операция в REST
Вопрос
Генерация отчёта занимает до 5 минут. Как правильно оформить API?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 202 Accepted с id задачи, статус через GET или вебхук. Асинхронный паттерн: 202 с идентификатором операции, статус по отдельному ресурсу, уведомление по готовности.
Варианты ответа
- Держать HTTP-соединение до 5 минут и вернуть файл в ответе
- Вернуть 200 сразу, а файл отправить на почту без статуса
- Вернуть 504, чтобы клиент повторил запрос через пару минут
- 202 Accepted с id задачи, статус через GET или вебхукправильный ответ
Разбор
Асинхронный паттерн: 202 с идентификатором операции, статус по отдельному ресурсу, уведомление по готовности. Долгое соединение рвут прокси и балансировщики, а повторы запустят генерацию заново. 200 без статуса оставляет клиента в неведении. 504 означает ошибку шлюза, а не нормальный сценарий.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.