go语言web开发框架_Iris框架讲解(五):MVC包使用
在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包中控制器极其处理方法的基本用法,在实战项目中,我们会在本节课学习内容的基础上,继续深入学习更详细的操作。
go语言web开发框架_Iris框架讲解(五):MVC包使用的更多相关文章
- go语言web开发框架_Iris框架讲解(五)MVC包使用
在Iris框架中,封装了mvc包作为对mvc架构的支持,方便开发者遵循mvc的开发原则进行开发. iris框架支持请求数据.模型.持久数据分层处理,并支持各层级模块代码绑定执行. MVC即:model ...
- go语言web开发框架_Iris框架讲解(六):Session的使用和控制
在实际的项目开发中,我们会经常有业务场景使用到Session功能.在iris框架中,也为我们提供了方便使用,功能齐全的Session模块.Session模块的源码目录为kataras/iris/ses ...
- GoWeb开发_Iris框架讲解(一)
Golang介绍 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软 ...
- GoWeb开发_Iris框架讲解(四):Iris框架设置操作
路由组的使用 在实际开发中,我们通常都是按照模块进行开发,同一模块的不同接口url往往是最后的一级url不同,具有相同的前缀url.因此,我们期望在后台开发中,可以按照模块来进行处理我们的请求,对于这 ...
- GoWeb开发_Iris框架讲解(二):Get、Post、Put等请求及数据返回格式
数据请求方式的分类 所有的项目中使用的请求都遵循HTTP协议标准,HTTP协议经过了1.0和1.1两个版本的发展. HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP ...
- Python语言Web开发框架web2py
python开发的强大的网络框架web2py,这个框架需要下载和集成. http://www.web2py.com/examples/static/web2py_src.zip
- GoWeb开发_Iris框架讲解(三):路由功能处理方式
Context概念 Context是iris框架中的一个路由上下文对象,在iris框架中的源码路径定义为:{$goPath}\github.com\kataras\iris\context\conte ...
- 我的第一个python web开发框架(10)——工具函数包说明(一)
PS:原先是想直接进入功能开发,要用到什么函数时再创建,这样也容易熟悉每个函数的由来和使用方法,但考虑到这样操作,到时会经常在不同文件间切换,不好描述,容易造成混乱,所以还是使用函数库这种方式来说明. ...
- 我的第一个python web开发框架(13)——工具函数包说明(四)
string_helper.py是字符串操作包,主要对字符串进行检查.过滤和截取等处理. #!/usr/bin/evn python # coding=utf-8 import re def chec ...
随机推荐
- CSS cursor 属性--css html 鼠标手型,鼠标形状,鼠标效果,样式
css鼠标手型cursor中hand与pointer Example:CSS鼠标手型效果 <a href="#" style="cursor:hand"& ...
- 2017人工智能元年,AI在喧嚣和质疑中一路走来
前百度首席科学家吴恩达说:就像100年前的电力.20年前的互联网一样,AI也会改变每一个产业! 有人说,现在就像1995年,那一年,第一家互联网公司--网景上市,一天之内大涨208%,互联网正式登上历 ...
- 1030 Travel Plan (30)(30 分)
A traveler's map gives the distances between cities along the highways, together with the cost of ea ...
- javascript:function 函数声明和函数表达式 详解
函数声明(缩写为FD)是这样一种函数: 有一个特定的名称 在源码中的位置:要么处于程序级(Program level),要么处于其它函数的主体(FunctionBody)中 在进入上下文阶段创建 影响 ...
- java中的设计模式及其六大原则
设计模式分类: 一共分为3大类:创造型模式.结构型模式.行为型模式. 创造型模式:工厂方法(FactoryMethod).抽象工厂模式(AbstractFactory).建造者模式(Builder). ...
- 自定义type为file型input控件+该控件具有本地图片预览功能
最近的一个项目需求是写一个type为filex型的input控件,这个控件: 第一,要自定义样式: 第二,要能直接在本地预览上传的图片: 第三,要能检测图片的尺寸是否符合要求. 故综合网上的资源写了下 ...
- 【转】 Pro Android学习笔记(五十):ActionBar(3):搜索条
目录(?)[-] ActionBar中的搜索条 通过Menu item上定义search view 进行Searchable的配置 在activity中将search view关联searchable ...
- PHP二维数组,根据多个字段来排序
如果是最最常见的二维数组排序, 大多数情况下也只用到二维: 用php内置函数 array_multisort( ) 是最简单的: <?php 假设, $arr 是一个二维数组, $arg1是取 ...
- linux日常管理-free查看内存工具
查看内存 命令 free 默认是k为单位 也可以指定 m为单位 或者G为单位,这个不精准 total 总容量 used 使用了多少 free 剩余多少 看第二行.第一行是物理内存,加上虚拟内存b ...
- 左连接,右连接,内连接,Union
数据库的三种常用连接解析: 官方解释: 1.left [outer] join(左外联接) 返回 包括左表中的所有记录和右表中联结字段相等的记录 2.right [outer] join(右外联接) ...