У мене є набір ресурсів, уявлення яких створені ліниво. Обчислення для побудови цих подань можуть зайняти від кількох мілісекунд до кількох годин, залежно від навантаження сервера, конкретного ресурсу та фази Місяця.
Перший запит GET, отриманий для ресурсу, починає обчислення на сервері. Якщо обчислення завершується протягом декількох секунд, обчислюване подання повертається. В іншому випадку повертається код стану 202 "Прийнято", і клієнт повинен опитати ресурс, поки не стане доступним остаточне представлення.
Причиною такої поведінки є наступне: якщо результат доступний протягом декількох секунд, його потрібно якомога швидше отримати; інакше, коли це стане доступним, не важливо.
Через обмежену пам'ять і величезний обсяг запитів, ні NIO, ні тривале опитування не є варіантом ( тобто я не можу тримати майже достатньо підключених з'єднань відкритим, навіть не можу навіть вмістити всі запити в пам'яті; один раз "кілька секунд" пройшли, я продовжую зайві запити). Подібним чином, обмеження клієнта такі, що вони не можуть обробляти зворотний виклик завершення. Нарешті, зауважте, що я не зацікавлений у створенні "фабричного" ресурсу, до якого відправляється POST, оскільки додаткові зворотні поїздки означають, що ми не виконуємо обмеження в режимі реального часу по частинах більше, ніж бажано (крім того, це додаткова складність; вигода від кешування).
Думаю, є певні суперечки щодо повернення коду статусу 202 "Прийнято" у відповідь на запит GET, оскільки я ніколи цього не бачив на практиці, а його найбільш інтуїтивне використання - у відповідь на небезпечні методи, але я ніколи виявив що-небудь конкретно знеохочувальне це. Більше того, я не зберігаю і безпеку, і неможливість?
Отже, що люди думають про цей підхід?
EDIT : Я повинен згадати, що це для так званого бізнес-веб-API, а не для браузерів.
202
. Те, що це рідко використовується на практиці, більше стосується IMHO, оскільки мало хто з розробників веб-сайтів дбає про належні коди стану, оскільки вони більше звикли до взаємодії браузер / користувач-агент, і в цьому випадку a не202
дає їм видимого підказки (дайте їм,200
і вони щасливі. ..).