go語言web開發框架_Iris框架講解(五)MVC包使用

qfDavie發表於2019-03-29

在Iris框架中,封裝了mvc包作為對mvc架構的支援,方便開發者遵循mvc的開發原則進行開發。

iris框架支援請求資料、模型、持久資料分層處理,並支援各層級模組程式碼繫結執行。

MVC即:model、view、controller三個部分,分別代表資料層、檢視層、控制層。控制器層負責完成頁面邏輯、實體層負責完成資料準備與資料操作、檢視層負責展現UI效果。

在iris框架中,用一張圖表示前端請求、服務端處理請求、服務端返回資料到前端的請求過程圖,描述如下:

mvc.Application

iris框架中的mvc包中提供了Application結構體定義。開發者可以通過註冊自定義的controller來使用對應提供的API,其中包含路由組router.Party,以此用來註冊layout、middleware以及相應的handlers等。

iris.mvc特性

iris框架封裝的mvc包,支援所有的http方法。比如,如果想要提供GET,那麼控制器應該有一個名為Get()的函式,開發者可以定義多個方法函式在同一個Controller中提供。這裡的Get、Post方法是指的直接和八種請求型別同名的方法,mvc模組會自動執行到Get()、Post()等八種對應的方法。如下所示:

//自定義的控制器
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{}
}複製程式碼
根據請求型別和請求URL自動匹配處理方法

在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請求的八種型別中的其他請求型別,也支援自動匹配。

BeforeActivation方法

在通過Configure和Handle進行了自定義Controller繫結以後,就可以使用自己自定義的Controller來進行自定義處理處理請求方法。開發者可以在BeforeActivation方法中來處理請求定義。如下所示,我們給出案例說明:

func (m *CustomController) BeforeActivation(a mvc.BeforeActivation){
    a.Handle("GET","/users/info","QueryInfo")
}
//對應處理請求的方法
func (m *CustomController) QueryInfo() mvc.Result{
    //todo
}複製程式碼
使用mvc.Configure配置路由組和控制器

除了使用mvc.new(app)來構建mvc.Application結構體物件和Handle方法來配置處理請求的控制器外,iris框架還支援使用mvc.Configure來配置路由組和控制器的設定。具體使用方法如下:

mvc.Configure(app.Party("/user"), func(mvc *mvc.Application) {
        mvc.Handle(new(UserController))
})複製程式碼

本節課中我們學習了mvc包中控制器極其處理方法的基本用法,在實戰專案中,我們會在本節課學習內容的基礎上,繼續深入學習更詳細的操作。


相關文章