โพสต์ในบล็อก http://farazdagi.com/blog/2014/rest-long-running-jobs (รวมถึงทรัพยากรที่อ้างอิง) แนะนำให้ใช้สถานการณ์ต่อไปนี้เมื่อใช้ REST เพื่อรองานที่รันระยะยาว
- ส่งคืนเพย์โหลดทันทีหากผลลัพธ์มีอยู่แล้วเมื่อส่งคืนคำขอ ดูเหมือนคำขอมาตรฐานที่มีรหัสสถานะตกลง
- ตอบกลับด้วยรหัสสถานะที่ยอมรับแล้ว และเพิ่มตำแหน่งรวมถึงส่วนหัว Async-Result เพื่อให้ลูกค้ารับรู้ว่าพวกเขาควร ...
- สำรวจตำแหน่งที่ส่งคืนโดยใช้ GET และรอจนกระทั่งส่วนหัว Async-Result เปลี่ยนเป็น Available หรือ Cancelled
- ในกรณีที่พร้อมใช้งาน รหัสสถานะ SEE_OTHER และส่วนหัวของสถานที่อื่นจะถูกส่งกลับ ติดตามสถานที่เพื่อรับผลลัพธ์
ฉันรู้ว่าฉันสามารถกลับมาได้เช่น a CompletableFuture
จากวิธีการ แต่จะบล็อกคำขอจนกว่าอนาคตจะเสร็จสมบูรณ์ มีการรองรับพฤติกรรมดังกล่าวใน Spring MVC หรือมีวิธีใดบ้างที่ฉันสามารถปรับปรุง Spring MVC เพื่อใช้พฤติกรรมนี้ (เช่น การใช้ org.springframework.web.method.support.HandlerMethodReturnValueHandler
?)
@RestController
ปกติ... คุณจะมี 1 วิธีที่ส่งคืน 1 หรือ 2 ในกรณีที่ 2 ไคลเอ็นต์ของคุณจำเป็นต้องสำรวจ URL ที่กำหนด (ซึ่งคุณสามารถใช้ได้) คุณไม่จำเป็นต้องมีอะไรที่กำหนดเองสำหรับสิ่งนี้ - person M. Deinum   schedule 09.05.2017