Iris_MVC

2. MVC包使用

在Iris框架中,封装了mvc包作为对mvc架构的支持,方便开发者遵循mvc的开发原则进行开发。 iris框架支持请求数据、模型、持久数据分层处理,并支持各层级模块代码绑定执行。 MVC即:model、view、controller三个部分,分别代表数据层、视图层、控制层。控制器层负责完成页面逻辑、实体层负责完成数据准备与数据操作、视图层负责展现UI效果。 在iris框架中,用一张图表示前端请求、服务端处理请求、服务端返回数据到前端的请求过程图,描述如下:

2.1 mvc.Application

iris框架中的mvc包中提供了Application结构体定义。开发者可以通过注册自定义的controller来使用对应提供的API,其中包含路由组router.Party,以此用来注册layout、middleware以及相应的handlers等。

2.2 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{}
 }

2.3 根据请求类型和请求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请求的八种类型中的其他请求类型,也支持自动匹配。

2.4 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
 }

2.5 使用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包中控制器极其处理方法的基本用法,在实战项目中,我们会在本节课学习内容的基础上,继续深入学习更详细的操作。

3. Session的使用和控制

在实际的项目开发中,我们会经常有业务场景使用到Session功能。在iris框架中,也为我们提供了方便使用,功能齐全的Session模块。Session模块的源码目录为kataras/iris/sessions包。

3.1 Session与Cookie的区别

在学习web开发过程中,我们总会和session和cookie打交道。本节课我们学习sesion相关的知识,因此有必要先通过讲解对比一下session和cookie的区别:

  • 首先是两者的相同点。session和cookie两者都是用来存储客户的状态信息的手段。在登录、注册等动作后,可以存储相关账户的状态信息,方便程序后续跟踪及使用。

  • 其次是不同点,讨论两者的不同点我们从几个角度来总结。首先是两者的存储位置。Cookie是存储在客户端浏览器上,方便客户端请求时使用;Session存储的相关信息存储在服务器端,用于存储客户端连接的状态信息。

  • 其次,从可以存储的数据类型来看。Cookie仅仅支持存储字符串string一种数据类型,Session支持int、string、bool等多种数据类型,Session支持的数据类型更全更多。

3.2 Session对象创建

在实际的程序开发中,iris框架中可以非常方便的创建一个新的session对象。如下所示,即是session的创建:

 sessionID := "mySession"
 //session的创建
 sess := sessions.New(sessions.Config{
         Cookie: sessionID,
 })

3.3 支持的数据类型

在上文中,我们说过session支持的数据类型要比cookie多,我们来看一下iris框架中的session所支持存储的数据类型:

 //String:字符串类型
 session.GetString()
 //Int:无符号整形 及系列相关单位的同类型
 session.GetInt()
 //Boolean:布尔值类型
 session.GetBoolean()
 //Float:单精度数值类型 及系列相关单位的同类型
 session.GetFloat()
 //interface{}:接口 即任意数据结构类型
 session.GetFlash()

上述代码块,即列出了iris框架中所支持存储的数据类型。我们在接下来的本节课程内容中,将会演示如何进行具体使用。

3.4 Session的使用

 session := sess.Start(ctx)
 session.Set("key", "helloworld")

4. 实战项目资源导入和项目框架搭建

从本节内容开始,我们将利用我们所学习的Iris框架的相关知识,进行实战项目开发。

4.1 实战项目框架搭建

我们的实战项目是使用Iris框架开发一个关于本地服务平台的后台管理平台。平台中可以管理用户、商品、商铺等相关的信息,平台可以实时展示用户、商品等相关监测数据的变化情况。通过此项目,旨在能够将Iris框架相关的知识得到巩固和练习。 如下是项目框架搭建后的说明:

  • config:项目配置文件及读取配置文件的相关功能

  • controller:控制器目录、项目各个模块的控制器及业务逻辑处理的所在目录

  • datasource:实现mysql连接和操作、封装操作mysql数据库的目录。

  • model:数据实体目录,主要是项目中各业务模块的实体对象的定义

  • service:服务层目录。用于各个模块的基础功能接口定义及实现,是各个模块的数据层。

  • static:配置项目的静态资源目录。

  • util:提供通用的方法封装。

  • main.go:项目程序主入口

  • config.json:项目配置文件。

 

猜你喜欢

转载自www.cnblogs.com/yzg-14/p/12262501.html