> 如何將已有的http.Handlers整合到Revel中?
在[概念圖](http://gorevel.cn/docs/manual/concepts.html)中, http.Handler 用于處理用戶的請求。Revel的處理是非常簡單的,它只是創建控制器實例,并將請求傳遞給過濾器鏈。
應用程序可以通過重寫默認的處理程序整合現有http.Handlers:
~~~
func installHandlers() {
var (
serveMux = http.NewServeMux()
revelHandler = revel.Server.Handler
)
serveMux.Handle("/", revelHandler)
serveMux.Handle("/path", myHandler)
revel.Server.Handler = serveMux
}
func init() {
revel.OnAppStart(installHandlers)
}
~~~
> 攔截器、過濾器和模塊之間是什么關系?
1. 模塊是可以插入到程序中的包。他們可以在多個Revel程序(或第三方源)中共享控制器、視圖、資源和其他代碼。
2. 過濾器是可掛接到請求處理管道的函數。他們一般作為一個整體處理技術在應用程序中使用,來垂直分隔應用程序邏輯。
3. 攔截器是封裝數據和行為一種方便的方式,因為嵌入類型導入它的攔截器和字段。這使得攔截器可以很好的處理一些事情,比如驗證登錄cookie并保存這些信息到一個字段。攔截器可以應用到一個或多個控制器。