我的web應用將從外部系統觸發。它會調用我的應用程序的一個請求路徑,但對不同類型的請求使用不同的查詢參數。Play框架中基於查詢參數的路由
其中一個參數是定義要做什麼的「動作」。其餘部分取決於「行動」。
這樣我就可以得到請求參數這樣的:
action=sayHello&user=Joe
action=newUser&name=Joe&address=xxx
action=resetPassword
...
我希望能夠它確實是這樣的查詢參數的路由,並儘可能多的驗證,以在比賽路線文件同樣對其進行編碼儘可能的其他參數。
我所擁有的是一個具有大量可選參數的所有這些可能性的路由。處理它的動作以大模式匹配開始,以進行分派和參數驗證。
使用谷歌搜索和檢查所以剛剛彈出了很多樣本,其中params在請求路徑中以某種方式編碼,所以多個路徑被路由到相同的動作,但我想反其道而行之:一條路徑被路由到不同的動作。
我的一位同事說我們可以有一個「調度員」動作,它只是基於「動作」參數重定向。它會比目前的解決方案更結構化,但它不會消除應該有選擇地傳遞給下一個動作的可選參數的長列表,所以我希望有人知道更好的解決方案:-)
BTW調用我的應用程序的外部系統是由另一家公司開發的,我對此設計沒有影響,因此不能改變我的應用程序觸發方式。
你的答案差不多2年過去了。在最新的播放框架中是否有更好的解決方案? – Ikrom
@Ikrom,我認爲更好的解決方案就像接受的答案,但使用選項params:GET/someRoute controller.dispatcher(action:Option [String]) – faster2b