• go初识iris框架(五) -MVC包的使用


    Iris框架中,封装了mvc包作为对mvc架构的支持,方便开发者遵循mvc的开发原则进行开发。
    iis框架支持请求数据、模型、持久数据分层处理,并支持各层级模块代码绑定执行。

    MVC即:model、view、controller三个部分,分别代表数据层、视图层、控制层。控制器层负责完
    成页面逐辑、实体层负责完成数据准备与数据操作、视图层负责展现U效果。

    mvc.Application

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

    iris.mvc特性

    iris框架封装的mvc包,支持所有的http方法。比如,如果想要提供GET,那么控制器应该有一个名为
    Get()的函数,开发者可以定义多个方法函数在同一个Controller中提供。这里的Get、Post方法是
    指的直接和八种请求类型同名的方法,mvc模块会自动执行到Get()、Post()等八种对应的方法。

    示例

    Get请求
    package main
    
    import "github.com/kataras/iris/v12"
    import "github.com/kataras/iris/v12/mvc"
    
    func main()  {
    	app := iris.New()
    
    	mvc.New(app).Handle(new(UserController))
    
    	app.Run(iris.Addr(":8088"))
    }
    
    type UserController struct{
    	//这里面的内容可以随便填写
    }
    
    /*
      url: http://localhost:8088
      type: Get
    */
    func (uc *UserController) Get() string {
    	return "hello world"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    若出现以下报错
    在这里插入图片描述

    可以执行一下命令来解决

    go get github.com/kataras/iris/v12/versioning@v12.2.5
    
    • 1
    go get github.com/kataras/iris/v12/websocket@v12.2.5
    
    • 1
    Post请求
    /*
      url: http://localhost:8088
      type: Post
    */
    func (uc *UserController) Post() {
    	iris.New().Logger().Info("post请求")
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    根据请求的类型和请求的URL自动匹配处理方式
    /*
      url: http://localhost:8088/info
      type: Get
    */
    func (uc *UserController) GetInfo() mvc.Result{
    	//todo
    	return mvc.Response{
    		Object: map[string] interface{}{
    			"code": 200,
    			"message":"请求成功",
    		},
    	}
    }
    
    /*
      url: http://localhost:8088/login
      type: Post
    */
    func (uc *UserController) PostLogin() mvc.Result{
    	//todo
    	return mvc.Response{
    		Object: map[string] interface{}{
    			"code": 200,
    			"message":"请求成功",
    		},
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    这里的Get请求(来自于本地)

    返回值mvc.Result:属于是mvc的一种请求的返回类型

    注意自动匹配格式请求+URL的方式比如GetInfo就是Get请求的/info

    BeforeActivation方法

    人为手动指定

    /*
    url:  http://localhost:8088/query
    type:Get
    */
    func (uc *UserController) BeforeActivation(a mvc.BeforeActivation) {
    	a.Handle("Get", "/query", "UserInfo") //Handle(httpMethod:请求类型,path:请求路径,funcName:这个方法处理这个http请求)
    }
    func (uc *UserController) UserInfo() mvc.Result {
    	return mvc.Response{}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    路由组的mvc处理

    //路由组的mvc处理
    mvc.Configure(app.Party("/user"), func(ctx *mvc.Application) {
    	ctx.Handle(new(UserController))
    })
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    参数估计(点估计和区间估计)
    获取依赖库的N种方法
    Codeforces Round #833 (Div. 2)
    vue2实例
    Jquery 获取当前时间日期
    系统架构设计专业技能 ·结构化需求分析 - 数据流图
    Flask-SQLAlchemy 中使用显式主主数据库设置
    Linux shell编程学习笔记14:编写和运行第一个shell脚本hello world!
    timescaledb学习
    计算BMI健康指数
  • 原文地址:https://blog.csdn.net/yasinawolaopo/article/details/132819350