Saya memiliki satu set resource yang representasi dibuat dengan malas. Komputasi untuk membuat representasi ini dapat berlangsung dari beberapa milidetik hingga beberapa jam, bergantung pada beban server, sumber daya tertentu, dan fase bulan.
Permintaan GET pertama yang diterima untuk sumber daya memulai komputasi di server. Jika komputasi selesai dalam beberapa detik, representasi yang dihitung dikembalikan. Jika tidak, kode status 202 "Diterima" dikembalikan, dan klien harus mengumpulkan sumber daya hingga representasi akhir tersedia.
Alasan perilaku ini adalah sebagai berikut: Jika hasil tersedia dalam beberapa detik, hasilnya harus diambil secepat mungkin; sebaliknya, saat tersedia tidak penting.
Karena memori yang terbatas dan volume permintaan yang sangat banyak, baik NIO maupun polling yang lama tidak menjadi pilihan ( yaitu, saya hampir tidak dapat menjaga koneksi yang cukup terbuka, bahkan saya juga tidak dapat memasukkan semua permintaan dalam memori; sekali "beberapa detik" telah berlalu, saya mempertahankan permintaan berlebih). Demikian pula, batasan klien sedemikian rupa sehingga mereka tidak dapat menangani callback penyelesaian. Terakhir, perhatikan bahwa saya tidak tertarik untuk membuat sumber daya "pabrik" yang diposkan oleh satu POST, karena perjalanan bolak-balik ekstra berarti kita gagal dalam kendala waktu nyata sedikit demi sedikit lebih dari yang diinginkan (selain itu, ini adalah kerumitan ekstra; juga, ini adalah sumber daya yang akan manfaat dari caching).
Saya membayangkan ada beberapa kontroversi dalam mengembalikan kode status 202 "Diterima" sebagai tanggapan atas permintaan GET, mengingat saya belum pernah melihatnya dalam praktiknya, dan penggunaannya yang paling intuitif adalah sebagai tanggapan terhadap metode yang tidak aman, tetapi saya tidak pernah menemukan sesuatu yang secara khusus mengecilkan hati. Selain itu, apakah saya tidak menjaga keamanan dan idempotensi?
Jadi, apa pendapat orang tentang pendekatan ini?
EDIT : Saya harus menyebutkan ini untuk apa yang disebut API web bisnis - bukan untuk browser.
202
. Itu jarang digunakan dalam praktiknya adalah IMHO lebih karena sedikit pengembang web yang peduli dengan kode status yang tepat karena mereka lebih terbiasa dengan interaksi browser / agen pengguna dalam hal ini a tidak202
memberi mereka petunjuk yang terlihat (beri mereka a200
dan mereka senang. ..).