我有一個功能只能在特定條件下執行(例如角色=='管理員')。現在我用'if'聲明。但它可能是條件數量很高的情況,並且'如果'長定義看起來不那麼美觀。
Go(或與Go框架相關)中的可用機制允許實現中間件概念(操作過濾器)?
例如,ASP.NET MVC允許這樣做:轉:如何使用中間件模式?
[MyFilter]
public ViewResult Index()
{
// Filter will be applied to this specific action method
}
所以,MyFilter()在單獨的類中實現允許更好的代碼的組合物和測試。
更新: 狂歡(用於轉到web框架)提供類似的功能與 攔截器(功能是由框架BEFORE或之後動作調用調用):https://revel.github.io/manual/interceptors.html
動作過濾器的目標是什麼?無論哪種方式,我都會拒絕,Go傾向於簡單,這會讓我感覺更加複雜。 –
動作過濾器是自定義屬性,它提供了聲明性方法來將控制前和動作後行爲添加到控制器的方法中。非常好的解釋(從ASP.NET MVC的角度)是在這裏:http://www.codeproject.com/Articles/577776/Filters-and-Attributes-in-ASPNET-MVC – olptkn