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

news2025/1/12 0:45:51

在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"
}

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

可以执行一下命令来解决

go get github.com/kataras/iris/v12/versioning@v12.2.5
go get github.com/kataras/iris/v12/websocket@v12.2.5

Post请求

/*
  url: http://localhost:8088
  type: Post
*/
func (uc *UserController) Post() {
	iris.New().Logger().Info("post请求")
}

根据请求的类型和请求的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":"请求成功",
		},
	}
}

这里的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{}
}

路由组的mvc处理

//路由组的mvc处理
mvc.Configure(app.Party("/user"), func(ctx *mvc.Application) {
	ctx.Handle(new(UserController))
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1017131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【微信小程序】swiper的使用

1.swiper的基本使用 <jxz-header></jxz-header> <view class"banner"><swiperprevious-margin"30rpx"autoplayinterval"2000"indicator-dotsindicator-color"rgba(0,0,0,0.3)"indicator-active-color"#bda…

数字化管理平台建设实践

在勘察设计行业&#xff0c;各企业加速推进数字化转型。通过管理要素数字化&#xff0c;不断优化内部组织运营效率&#xff1b;通过生产手段数字化、技术产品数字化&#xff0c;提升服务质量&#xff0c;改善客户体验&#xff1b;通过数字化营销&#xff0c;精准对接市场需求&a…

Linux下的系统编程——信号(十一)

前言&#xff1a; 信号在我们的生活中随处可见&#xff0c; 如&#xff1a;古代战争中摔杯为号&#xff1b;现代战争中的信号弹&#xff1b;体育比赛中使用的信号枪...... 他们都有共性&#xff0c;信号是信息的载体&#xff0c;Linux/UNIX 环境下&#xff0c;古老、经典的通信…

基于Java+SpringBoot+Vue的图书借还小程序的设计与实现(亮点:多角色、点赞评论、借书还书、在线支付)

图书借还管理小程序 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序&#xff08;小蔡coding&#xff09;2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 主要功能描述 五、系统实现5.1 小…

.NET 8 Release Candidate 1 (RC1)现已发布,包括许多针对ASP.NET Core的重要改进!

这是我们计划在今年晚些时候发布的最终.NET 8版本之前的两个候选版本中的第一个。大部分计划中的功能和变更都包含在这个候选版本中&#xff0c;可以供您尝试使用。您可以在文档中找到完整的ASP.NET Core在.NET 8中的新功能列表。一些领域&#xff08;尤其是Blazor&#xff09;…

SpringMvc第六战-【SpringMvcJSON返回异常处理机制】

前言&#xff1a; 小编讲述了&#xff1a;JSR303的概念&#xff0c;应用场景和在具体实例的使用&#xff1b;和拦截器的应用 今天小编来讲述的为cJSON返回&异常处理机制&#xff0c;json返回就不用多说&#xff0c;毕竟大部分数据都是通过Json来传递数据的&#xff0c;异…

elasticsearch4-文档操作

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…

VSCode 安装使用教程 环境安装配置 保姆级教程

一个好用的 IDE 不仅能提升我们的开发效率&#xff0c;还能让我们保持愉悦的心情&#xff0c;这样才是非常 Nice 的状态 ^_^ 那么&#xff0c;什么是 IDE 呢 &#xff1f; what IDE&#xff08;Integrated Development Environment&#xff0c;集成开发环境&#xff09;是含代码…

Python实现四维图像绘制系统

文章目录 动图绘制系统的实现播放控制接口优化总结 Python绘图系统&#xff1a; 源码地址&#xff1a;Python打造动态绘图系统&#x1f4c8;从0开始的3D绘图系统&#x1f4c9;一套3D坐标&#xff0c;多个函数&#x1f4ca;散点图、极坐标和子图自定义控件&#xff1a;绘图风格…

Modbus协议介绍及Modbus TCP

这里写目录标题 一、Modbus起源1.起源2.分类3.优势4.应用场景5.ModbusTCP特点⭐⭐⭐ 二、Modbus TCP协议格式1.报文头2.寄存器3.功能码4.协议包书写模板总结 一、Modbus起源 1.起源 Modbus由Modicon公司于1979年开发&#xff0c;是一种工业现场总线协议标准。 Modbus通信协议…

网络存储解决方案:选择与配置

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

03MyBatis-Plus中的常用注解

常用注解 TableName MyBatis-Plus根据BaseMapper中指定的泛型(实体类型名)确定数据库中操作的表,如果根据实体类型名找不到数据库中对应的表则会报表不存在异常 //向表中插入一条数据 Test public void testInsert(){User user new User(null, "张三", 23, "…

基于Java+SpringBoot+Vue+uniapp点餐小程序(亮点:协同过滤算法、会员系统,购物车结算、在线聊天)

校园点餐小程序 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序&#xff08;小蔡coding&#xff09;2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 系统功能结构设计4.2 主要功能描述 五…

【操作系统】深入浅出死锁问题

死锁的概念 在多线程编程中&#xff0c;我们为了防止多线程竞争共享资源而导致数据错乱&#xff0c;都会在操作共享资源而导致数据错乱&#xff0c;都会在操作共享资源之前加上互斥锁&#xff0c;只有成功获得到锁的线程&#xff0c;才能操作共享资源&#xff0c;获取不到锁的…

Python新手入门

文章目录 概要python代码运行结果小结 概要 以下内容为python各种输出语句的语法&#xff01; python代码 # 标准化输出 print("这是标准化输出&#xff01;")# 格式化输出 print("这是第1种%s"%"格式化输出&#xff01;") print("这是第…

牛客小白月赛 78

比赛地址 : 牛客小白月赛78 A.几何糕手 题目链接 : 几何糕手 题面 : 思路 : 数学模拟题; 最大面积就是在a与b成一条直线的情况下&#xff1b; so : 输出pi * (ab) * (ab)即可 注意 : 注意精度!!! 代码 : #include<iostream> #include<algorithm> u…

STM32--PWR电源控制

文章目录 PWR电源电源管理器上电复位&#xff08;POR&#xff09;和掉电复位&#xff08;PDR&#xff09; 可编程电压监测器&#xff08;PVD&#xff09;低功耗模式睡眠模式停止模式待机模式 睡眠模式工程停止模式待机模式 PWR STM32的PWR模块是其电源管理系统的核心部分&…

JDK12特性

文章目录 JAVA12概述语法层次的改变switch 表达式(预览) API层次的改变支持数字压缩格式化String新方法Files新增mismatch方法 关于GC的特性Shenandoah GC可中断的 G1 Mixed GC增强G1 JAVA12概述 2019年3月19日&#xff0c;java12正式发布了&#xff0c;总共有8个新的JEP(JDK …

005-第一代光电小工具(一)

第一代光电小工具(一) 文章目录 第一代光电小工具(一)项目介绍大致原理描述核心控件QCustomPlot关于QCustomPlot 播放音频软件截图 关键字&#xff1a; Qt、 Qml、 QCustomPlot、 曲线、 SQLite 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&…

【Spring Boot】Spring—加载监听器

这里写目录标题 前言加载监听器执行run方法加载配置文件封装Node调用构造器思考 前言 前几天的时候&#xff0c;项目里有一个需求&#xff0c;需要一个开关控制代码中是否执行一段逻辑&#xff0c;于是理所当然的在yml文件中配置了一个属性作为开关&#xff0c;再配合nacos就可…