Thắc mắc về method POST webservice restful
Mình có thấy 1 web service khi mình gửi dữ liệu qua method POST cho nó xử lý thì nó sẽ trả về id và status = queued || error , và truyền dữ liệu cho thằng khác xử lý (do cái này xử lý rất là lâu), nếu status = queued mình phải dùng id đó rồi lại While(true) gọi đến method GET nó cũng trả về status = inprocess || completed, nếu là completed thì nó sẽ trả về cùng với data mà mình cần.
Cấu trúc nó là như vậy và định implement nó nhưng mình thắc mắc là sao method POST nó không cần thằng kia xử lý xong mà có thể trả response về cho client ngay tức thì được ?
HTTP Method nào cũng đâu quan trọng, quan trọng là ở phía server handle cái request đó như thế nào. Có nhiều cách để implement, nhưng về cơ bản là ở phía server sẽ thực hiện “nhờ ai đó” xử lý cái request từ client rồi ngay lập tức response cho client với id của cái async task.
Implement cái này có nhiều cách, có thể dùng thread/task để process data, có thể gửi async request tới một server khác ở dạng tạo một cái task rồi chờ bên kia làm nó gửi notification về. Hoặc đơn giản nhất là tạo một cái crontab cho nó chạy, khi nào xong thì nó write vào DB. Phía client cứ polling liên tục khi nào DB có data thì trả về.
Cảm ơn anh, mấy từ khóa này em chưa nghe bao giờ vậy chắc phải mất mấy ngày tìm hiểu nữa rồi
ài, ok, em nghĩ thế này đi, đó là các kiểu fire and forget trong lập trình ấy. Em yêu cầu làm một việc, rồi em quên nó đi. Em không phải chờ. Anh sửa lại câu trả lời để tránh tập trung vào chữ async.
Nếu em viết app trên PC thì nó sẽ là backgroud thread.
Còn nếu em biết cronjob thì em cứ tưởng tượng là cái nhiệm vụ process data sẽ do cronjob làm. Khi làm xong ghi vào DB.
Còn nếu em đang làm bằng java thì em sử dụng framework gì? Em cứ search
tên framework
+ background task sẽ tìm thấy cách người ta làm.em dùng Spring MVC anh ạ,
Google với từ khoá “Spring MVC background task” ra ngay kết quả đầu tiên luôn
Submitting a background task from spring mvc app
Còn về Async thì em chỉ cần đọc cái định nghĩa đơn giản thế này là được
Asynchronous vs synchronous execution, what does it really mean?
Hic trước em học thread trên lớp mà không biết để làm gì để bây giờ phải hỏi câu ngu ngơ này tìm hiểu lại thì giờ mới biết haizz