簡體   English   中英

如何運行按需過濾器Scala Play框架

[英]How to run filter on demand scala play framework

我正在開發具有播放框架功能的Scala應用程序,我創建了一個過濾器來過濾來自外部服務器的每個請求,但是現在我堅持如何自兩天以來按需運行過濾器,我擁有80個API 30他們中的一些需要運行特定的過濾器,而這樣的請求我如何讀取請求路由模板

 GET /api/v1/:locale/:uuid core.controllers.MyClass.myAction1(locale: String)
 GET /api/v1/:locale/:uuid/MyRoute core.controllers.MyClass.myAction2(locale: String)
 GET /api/v1/:locale/:uuid/Foo core.controllers.MyClass.myAction3(locale: String)
 GET /api/v1/:locale/orders/:orderId core.controllers.MyClass.myAction4(locale: String)

好吧,那些路線被放置在路線文件中,在過濾器中,我需要檢查天氣,以查看路線是否具有:uuid變量或:orderId以運行其特定的過濾器,因為它們的兩個ID都將它們作為uuid傳遞給我,所以我無法沒想到這個請求,我可以閱讀路線模板嗎?

您可以從RequestHeader#attrs訪問一些路由信息:

// in your filter
val handlerDef: Option[HandlerDef] = request.attrs.get(Router.Attrs.HandlerDef)

請參閱HandlerDef API

如果要從80個動作中選擇30個來運行某些通用邏輯,則還可以考慮使用“動作生成器”來提供該邏輯。

當您使用Action { ... }您將獲得香草動作。 您還可以制作自己的MyAction { ... } ,該MyAction { ... }包裝正常的Action並運行自定義邏輯。 這是一個ActionBuilder 如果您使用這種方法,則只需更新30個操作即可使用該自定義操作構建器。

請參閱: https//www.playframework.com/documentation/2.6.x/ScalaActionsComposition#Custom-action-builders

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM