Ứng dụng web của tôi sẽ được kích hoạt từ một hệ thống bên ngoài. Nó sẽ gọi một đường dẫn yêu cầu của ứng dụng của tôi, nhưng sử dụng các tham số truy vấn khác nhau cho các loại yêu cầu khác nhau.Định tuyến dựa trên tham số truy vấn trong khung Chơi
Một trong các tham số là "hành động" xác định những việc cần làm. Phần còn lại của các tham số phụ thuộc vào "hành động".
Vì vậy, tôi có thể nhận được params yêu cầu như thế này:
action=sayHello&user=Joe
action=newUser&name=Joe&address=xxx
action=resetPassword
...
Tôi muốn để có thể mã hóa nó tương tự như trong file tuyến để chơi vì vậy nó param truy vấn dựa tuyến và càng nhiều các xác nhận các thông số khác càng tốt.
Điều tôi thay vào đó là một định tuyến cho tất cả các khả năng này với nhiều thông số tùy chọn. Việc xử lý hành động nó bắt đầu với một kết hợp mẫu lớn để thực hiện công văn và xác nhận tham số.
Googling and checking SO chỉ xuất hiện nhiều mẫu khi các tham số được mã hóa trong đường dẫn yêu cầu bằng cách nào đó, vì vậy nhiều đường dẫn được định tuyến đến cùng một hành động, nhưng tôi muốn ngược lại: một đường dẫn được chuyển đến các hành động khác nhau.
Một trong các đồng nghiệp của tôi cho biết chúng tôi có thể có một hành động "điều phối" sẽ chỉ chuyển hướng dựa trên thông số "hành động". Nó sẽ có cấu trúc hơn một chút sau đó là giải pháp hiện tại, nhưng nó sẽ không loại bỏ danh sách dài các thông số tùy chọn cần được chọn lọc cho hành động tiếp theo, vì vậy tôi hy vọng người ta biết một giải pháp tốt hơn :-)
BTW hệ thống bên ngoài gọi ứng dụng của tôi được phát triển bởi một công ty khác và tôi không có ảnh hưởng đến thiết kế này, do đó, nó không phải là một tùy chọn để thay đổi cách ứng dụng của tôi được kích hoạt.
Gần 2 năm trôi qua sau câu trả lời của bạn. Có giải pháp nào tốt hơn trong khung chơi mới nhất không? – Ikrom
@ Ikrom, tôi nghĩ rằng giải pháp tốt hơn giống như câu trả lời được chấp nhận, nhưng sử dụng một tham số tùy chọn: GET/someRoute controller.dispatcher (action: Option [String]) – faster2b