Entri blog http://farazdagi.com/blog/2014/rest-long-running-jobs (serta sumber daya yang direferensikan) merekomendasikan penggunaan skenario berikut saat menggunakan REST untuk menunggu pekerjaan yang berjalan lama
- Segera kembalikan payload jika hasilnya sudah tersedia saat mengembalikan permintaan. Sepertinya permintaan standar dengan kode status OK.
- Tanggapi dengan kode status DITERIMA dan tambahkan Lokasi serta header Async-Result agar klien mengetahui bahwa mereka harus ...
- Lakukan polling lokasi yang dikembalikan menggunakan GET dan tunggu hingga header Async-Result berubah menjadi Tersedia atau Dibatalkan.
- Jika Tersedia, kode status SEE_OTHER dan header Lokasi lainnya dikembalikan. Ikuti lokasinya untuk mendapatkan hasilnya.
Saya tahu bahwa saya dapat kembali, mis. a CompletableFuture
dari suatu metode, tetapi ini akan memblokir permintaan hingga masa depan selesai. Apakah ada dukungan untuk perilaku seperti itu di Spring MVC atau adakah cara agar saya dapat meningkatkan Spring MVC untuk mengimplementasikan perilaku ini, (misalnya menerapkan org.springframework.web.method.support.HandlerMethodReturnValueHandler
?)
@RestController
biasa... Anda akan memiliki 1 metode yang mengembalikan 1 atau 2. Dalam kasus 2, klien Anda perlu melakukan polling pada URL yang diberikan (yang dapat Anda terapkan). Anda tidak memerlukan sesuatu yang khusus untuk ini. - person M. Deinum   schedule 09.05.2017