在Iris框架中,封裝了mvc包做爲對mvc架構的支持,方便開發者遵循mvc的開發原則進行開發。html
iris框架支持請求數據、模型、持久數據分層處理,並支持各層級模塊代碼綁定執行。前端
MVC即:model、view、controller三個部分,分別表明數據層、視圖層、控制層。控制器層負責完成頁面邏輯、實體層負責完成數據準備與數據操做、視圖層負責展示UI效果。bash
在iris框架中,用一張圖表示前端請求、服務端處理請求、服務端返回數據到前端的請求過程圖,描述以下:架構
iris框架中的mvc包中提供了Application結構體定義。開發者能夠經過註冊自定義的controller來使用對應提供的API,其中包含路由組router.Party,以此用來註冊layout、middleware以及相應的handlers等。mvc
iris框架封裝的mvc包,支持全部的http方法。好比,若是想要提供GET,那麼控制器應該有一個名爲Get()的函數,開發者能夠定義多個方法函數在同一個Controller中提供。這裏的Get、Post方法是指的直接和八種請求類型同名的方法,mvc模塊會自動執行到Get()、Post()等八種對應的方法。以下所示:app
//自定義的控制器
type CustomController struct{}
//註冊自定義控制器處理請求
mvc.New(app).Handle(new(CustomController))
//自動處理基礎的Http請求
//Url: http://localhost:8000
//Type:GET請求
func (cc *CustomController) Get() mvc.Result{
//todo
return mvc.Response{
ContentType:"text/html",
}
}
/**
* Url:http://localhost:8000
* Type:POST
**/
func (cc *CustomController) Post() mvc.Result{
//todo
return mvc.Response{}
}複製代碼
在iris框架中的mvc設計包中,設定了自定義的控制器之後,支持根據請求類型和對應的URL自動匹配對應的處理方法。具體案例以下:框架
/**
* url:http://localhost:8000/info
* type:GET請求
**/
func (cc *CustomController) GetInfo() mvc.Result{
//todo
}
/**
* url:http://localhost:8000/login
* type:POST
**/
func (cc *CustomController) PostLogin() mvc.Result{
//todo
}複製代碼
如上案例,當咱們發起請求時,iris框架就可以自動匹配對應的控制器的處理方法。除了上述get和post兩個方法以外,http請求的八種類型中的其餘請求類型,也支持自動匹配。函數
在經過Configure和Handle進行了自定義Controller綁定之後,就能夠使用本身自定義的Controller來進行自定義處理處理請求方法。開發者能夠在BeforeActivation方法中來處理請求定義。以下所示,咱們給出案例說明:post
func (m *CustomController) BeforeActivation(a mvc.BeforeActivation){
a.Handle("GET","/users/info","QueryInfo")
}
//對應處理請求的方法
func (m *CustomController) QueryInfo() mvc.Result{
//todo
}複製代碼
除了使用mvc.new(app)來構建mvc.Application結構體對象和Handle方法來配置處理請求的控制器外,iris框架還支持使用mvc.Configure來配置路由組和控制器的設置。具體使用方法以下:學習
mvc.Configure(app.Party("/user"), func(mvc *mvc.Application) {
mvc.Handle(new(UserController))
})複製代碼
本節課中咱們學習了mvc包中控制器極其處理方法的基本用法,在實戰項目中,咱們會在本節課學習內容的基礎上,繼續深刻學習更詳細的操做。