go语言学习005——iris框架学习

本文详细介绍了Go语言中Iris框架的使用,包括安装、基本HTTP请求(GET、POST等)的处理、自定义请求处理、用户组管理和配置设置。示例代码展示了如何创建路由、接收不同格式的请求参数、错误处理以及配置信息的动态加载。此外,还提到了路径参数和正则表达式的应用。

1、安装

go get -u github.com/kataras/iris

然后在gopath目录下,新建first_iris文件夹
新建文件main.go

package mainimport ("github.com/kataras/iris/v12""github.com/kataras/iris/v12/middleware/logger""github.com/kataras/iris/v12/middleware/recover"
)func main() {app := iris.New()app.Logger().SetLevel("debug")app.Use(recover.New())app.Use(logger.New())app.Get("/", func(ctx iris.Context) {ctx.HTML("Hello")})app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed))
}

之后go rum main.go
再浏览器localhost:8080访问

2、iris中的http8种请求

2.1、直接处理请求

package mainimport ("github.com/kataras/iris/v12""github.com/kataras/iris/v12/context"
)func main() {app := iris.New()//app.Get();  // 可以直接点出来8种获取网络资源的方法,//app.Put();app.Get("/getRequest", func(context iris.Context) {// 处理get请求,请求的url为:/getRequestpath := context.Path()app.Logger().Info(path)})// 1、处理Get请求app.Get("/userpath", func(context iris.Context) {path := context.Path()app.Logger().Info(path)context.WriteString("请求路径 + " + path)})// 2、处理Get请求,并接受参数app.Get("/userinfo", func(context iris.Context) {path := context.Path()app.Logger().Info(path)// 获取get请求携带的参数userName := context.URLParam("username")app.Logger().Info(userName)pwd := context.URLParam("pwd")app.Logger().Info(pwd)// 返回html格式context.HTML("<h1>" + userName + "," + pwd + "</h1>")})// 2.2、返回json格式的数据app.Get("/getJson", func(context iris.Context) {context.JSON(iris.Map{"message": "hello world", "requestCode": 200})})// 3、处理Post请求,form表单的字段获取app.Post("/postLogin", func(context iris.Context) {path := context.Path()app.Logger().Info(path)// 使用context.PostValue来获取post请求所提交的form表单数据name := context.PostValue("name")pwd := context.PostValue("pwd")app.Logger().Info(name, " ", pwd)context.HTML(name)})// 4、处理json格式的post请求// postman的请求信息:{"name":"davie","age": 28}app.Post("/postJson", func(context iris.Context) {// 1、Pathpath := context.Path()app.Logger().Info("请求URL: ", path)// 2. Json解析var person Personif err := context.ReadJSON(&person); err != nil {panic(err.Error())}context.Writef("Received : %#+v\n", person)})// 5、处理post请求 xml格式// postman的请求信息:{"name":"davie","age": 28}app.Post("/postXml", func(context iris.Context) {//1.Pathpath := context.Path()app.Logger().Info("请求URL:", path)//2.XML数据解析var student Studentif err := context.ReadXML(&student); err != nil {panic(err.Error())}//输出:context.Writef("Received:%#+v\n", student)})app.Run(iris.Addr(":8000"), iris.WithoutServerError(iris.ErrServerClosed))}type Person struct {Name string `json:"name"`Age  int    `json:"age"`
}//自定义的结构体
type Student struct {//XMLName xml.Name `xml:"student"`StuName string `xml:"stu_name"`StuAge  int    `xml:"stu_age"`
}

2.2、使用通用的handle方法自定义

编写自己的请求处理类型以及对应的方法
和正则表达式

package mainimport ("github.com/kataras/iris/v12""github.com/kataras/iris/v12/context"
)func main() {app := iris.New()// 第二种统一使用handle处理方式app.Handle("GET", "/userinfo", func(context context.Context) {path := context.Path()app.Logger().Info(path)app.Logger().Error("requext is: ", path)context.Writef("写回去")})app.Handle("POST", "/postcommit", func(context context.Context) {path := context.Path()app.Logger().Info("post request ,the url is :", path)})// 正则表达式,带参数的app.Get("/weather/{date}/{city}", func(context context.Context) {path := context.Path()date := context.Params().Get("date") // 获取自定义的变量city := context.Params().Get("city")context.WriteString(path + " , " + date + " , " + city)})// 正则表达式,带参数,且带参数的数据类型的app.Get("/api/users/{isLogin:bool}", func(context context.Context) {path := context.Path()isLogin, err := context.Params().GetBool("isLogin")if err != nil {context.StatusCode(iris.StatusNonAuthoritativeInfo)}if isLogin {context.WriteString("已登录")} else {context.WriteString("未登录")}context.Writef(path)//context.Params().Get  之后提示的信息,就是可以获取的数据类型})app.Run(iris.Addr(":8800"), iris.WithoutServerError(iris.ErrServerClosed))}

2.3、用户组

先进入,user,
之后在选择登陆,还是而做其他的,
服务器端代码是前缀匹配,如果遇到了user,就跳转到user的组中,再接着做其他的相关的事情

	//app := iris.New()//userParty//userparty := user.Party() 用户组//users.Done(func(){})   执行完用户组之后,需要调用一下这个方法

2.4、配置信息

func main() {app := iris.New()// 1、代码直接配置app.Configure(iris.WithConfiguration(iris.Configuration{DisableInterruptHandle: false,EnablePathEscape: false,TimeRormat: "Mon,02 Jan 2006 15:04:05 GMT",}))// 2、读取tml配置文件读取服务的配置app.Configure(iris.WithConfiguration(iris.YAML("/Users/hongweiyu/go/src/irisDemo/004_handle_method/configs/iris.tml")))// 3、通过读取yaml配置文件app.Configure(iris.WithConfiguration(iris.YAML("("/Users/hongweiyu/go/src/irisDemo/004_handle_method/configs/iris.yml")))// 4、通过json配置文件file ,_ := os.Open("/User/hongweiyu/go/src/irisDemo/004_handle_method/config.json")defer file.Close()decoder := json.NewDecoder(file)conf := Coniguration{}err := decoder.Decode(&conf)fi err != nil {fmt.Println("error:",err)}fmt.Println(conf.Port)type Coniguration struct {AppName string 'json:"appname'Port int 'json:"port'
}

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

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

相关文章

B树的性质和插入过程

性质 平衡性&#xff1a;所有叶子节点都在同一层多路&#xff1a;m 阶 B 树 最多&#xff1a; m 个分支&#xff0c;m-1 个元素 最少&#xff1a; 根节点 2 个分支 1个元素 其他节点 ⌈ m / 2 ⌉ \lceil m/2\rceil ⌈m/2⌉ 个分支 ⌈ m / 2 ⌉ \lceil m/2\rceil ⌈m/2⌉ −…

基于预测反馈的情感分析情境学习

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

Qt设置部件的阴影效果

QT中的比如QWidget,QLabel,QPushbutton&#xff0c;QCheckBox都可以设置阴影效果&#xff0c;就像这样&#xff1a; 以QWidget为例&#xff0c;开始尝试使用样式表的形式添加阴影&#xff0c;但没有效果&#xff0c;写法如下&#xff1a; QWidget#widget1::shadow{color: rgb…

AS-REP Roasting离线爆破攻击

针对一个域内用户&#xff0c;其账户选项有个设置叫作 “不要求 kerberos 预身份验证”&#xff0c;它默认是关闭的。 当 “不要求 kerberos 预身份验证” 选项被勾选&#xff0c;会出现以下效果&#xff1a; as-req 报文中不需要添加用户 hash 加密的时间戳&#xff0c;自动返…

JMeter配置原件-计数器

一、面临的问题&#xff1a; 由于本人的【函数助手对话框】中counter计数器每次加2&#xff0c;且只显示偶数(如下图所示)&#xff0c;因此借助【配置原件-计数器】来实现计数功能。 如果有大佬知道解决方式&#xff0c;麻烦评论区解答一下&#xff0c;谢谢。 二、配置原件-c…

基于“2+1 链动模式商城小程序”的微商服务营销策略探究

摘要&#xff1a;本文探讨在竞争激烈的市场经济与移动互联网时代背景下&#xff0c;微商面临的机遇与挑战。着重分析“21 链动模式商城小程序”如何助力微商改变思路&#xff0c;通过重视服务、提升服务质量&#xff0c;以服务营销放大利润&#xff0c;实现从传统微商模式向更具…

Grad-CAM-解释CNN决策过程的可视化技术

Grad-CAM&#xff08;Gradient-weighted Class Activation Mapping&#xff09;是一种用于解释卷积神经网络&#xff08;CNN&#xff09;决策过程的可视化技术。其核心思想是通过计算分类分数相对于网络确定的卷积特征的梯度&#xff0c;来识别图像中哪些部分对分类结果最为重要…

文件防泄漏 | 文件防泄漏软件解决方案分享,网络数据泄露防护系统

文件防泄漏 | 文件防泄漏软件解决方案分享&#xff0c;网络数据泄露防护系统 企业面临的一大挑战是数据安全和隐私保护。 网络数据泄露不仅会导致经济损失&#xff0c;还会损害企业的声誉和客户关系。 为了应对这一挑战&#xff0c;域智盾软件应运而生&#xff0c;成为众多企…

EGO Swarm翻译

目录 摘要 Ⅰ 介绍 Ⅱ 相关工作 A . 单四旋翼局部规划 B . 拓扑规划 C. 分布式无人机集群 Ⅲ 基于梯度的局部规划隐式拓扑轨迹生成 A.无需ESDF梯度的局部路径规划 B.隐式拓扑轨迹生成 Ⅳ 无人机集群导航 A 机间避碰 B. 定位漂移补偿 C. 从深度图像中去除agent Ⅴ …

直流充电桩基本工作原理

1、控制导引电路 2、电动汽车直流快充工作原理 1&#xff09;第一阶段 未充电自然状态阶段 充电枪处于自然阶段&#xff0c;充电枪上的按钮没有按下&#xff0c;也就是电路图中的开关S处于接通状态&#xff0c;此时R1 、 R2串联&#xff0c;检测点1处的电压为6V 2&#xff09;…

七、网络安全-企业数据脱敏

文章目录 前言一、数据脱敏方法二、企业脱敏方案1. 数据库脱敏方案2. 历史数据脱敏3. 具体实现 三、日志脱敏方案四、输出脱敏 前言 数据脱敏‌ 随着用户对个人隐私数据的重视和法律法规的完善&#xff0c;数据安全显得愈发重要。一方面可以加强权限管理&#xff0c;减少能够接…

任务2 配置防火墙firewalld

基本概念 概述 支持动态更新防火墙规则 不重启即可创建、修改和删除规则 使用区域和服务来简化防火墙配置 区域 一组预定义的规则&#xff0c;防火墙策略集合&#xff08;或策略模板&#xff09; 把网络分配到不同的区域中&#xff0c;并为网络及其关联的网络接口或流量源…

HIPT论文阅读

题目《Scaling Vision Transformers to Gigapixel Images via Hierarchical Self-Supervised Learning》 论文地址&#xff1a;[2206.02647] Scaling Vision Transformers to Gigapixel Images via Hierarchical Self-Supervised Learning 项目地址&#xff1a;mahmoodlab/HI…

重拾设计模式--状态模式

文章目录 状态模式&#xff08;State Pattern&#xff09;概述状态模式UML图作用&#xff1a;状态模式的结构环境&#xff08;Context&#xff09;类&#xff1a;抽象状态&#xff08;State&#xff09;类&#xff1a;具体状态&#xff08;Concrete State&#xff09;类&#x…

[WiFi] WiFi 802.1x介绍及EAP认证流程整理

802.1X Wi-Fi 802.1X 是一种网络访问控制协议&#xff0c;常用于保护无线网络。它提供了一种基于端口的网络访问控制机制&#xff0c;主要用于在用户和网络之间建立安全的连接。以下是 802.1X 的一些关键特点&#xff1a; 认证框架 802.1X 使用 EAP&#xff08;可扩展认证协议…

服务器数据恢复—V7000存储中多块磁盘出现故障导致业务中断的数据恢复案例

服务器存储数据恢复环境&#xff1a; 一台V7000存储上共12块SAS机械硬盘&#xff08;其中1块是热备盘&#xff09;&#xff0c;组建了2组Mdisk&#xff0c;创建了一个pool。挂载在小型机上作为逻辑盘使用&#xff0c;小型机上安装的AIXSybase。 服务器存储故障&#xff1a; V7…

网络安全防范

实践内容 学习总结 PDR&#xff0c;$$P^2$$DR安全模型。 防火墙&#xff08;Firewall&#xff09;&#xff1a; 网络访问控制机制&#xff0c;布置在网际间通信的唯一通道上。 不足&#xff1a;无法防护内部威胁&#xff0c;无法阻止非网络传播形式的病毒&#xff0c;安全策略…

你的第一个博客-第一弹

使用 Flask 开发博客 Flask 是一个轻量级的 Web 框架&#xff0c;适合小型应用和学习项目。我们将通过 Flask 开发一个简单的博客系统&#xff0c;支持用户注册、登录、发布文章等功能。 步骤&#xff1a; 安装 Flask 和其他必要库&#xff1a; 在开发博客之前&#xff0c;首…

LLaMA-Factory(一)环境配置及包下载

LLaMA-Factory(一&#xff09;环境配置及包下载 本机配置1. git下载2.创建虚拟环境3. 下载官方包内依赖4. 下载bitsandbytes5. 启动项目6. 可能出现问题1&#xff1a;pip install 出现 error: subprocess-exited-with-error 错误7. 可能出现问题2&#xff1a; ModuleNotFoundEr…

clickhouse-题库

1、clickhouse介绍以及架构 clickhouse一个分布式列式存储数据库&#xff0c;主要用于在线分析查询 2、列式存储和行式存储有什么区别&#xff1f; 行式存储&#xff1a; 1&#xff09;、数据是按行存储的 2&#xff09;、没有建立索引的查询消耗很大的IO 3&#xff09;、建…