go语言除了原生http web框架,还有3个比较出名的框架,gin,beego,Iris

先创建项目

创建go.mod文件,管理各种包

打开命令行,下载iris包,go get github.com/kataras/iris/v12@master
记得配置goproxy,防止下载失败

成功创建项目demo1
写入以下代码运行后,浏览器可以正常访问。

package mainimport "github.com/kataras/iris/v12"func main() {app := iris.New()         //开启iris http服务app.Use(iris.Compression) //iris.Compression 是Iris内部对IO数据进行压缩的模块,可以提高数据传输速度。app.Get("/", func(ctx iris.Context) {ctx.HTML("Hello <strong>%s</strong>!", "World")})app.Listen(":8080") //监听端口
}

Restful规范

定义一种接口的设计规范,但并不是必须用这个规范,根据实际场景来,不要墨守成规

表单传参

app.Post("/user/login", func(c *context.Context) {//获取表单的参数username := c.PostValue("username")password := c.PostValue("password")//控制台输出的日志app.Logger().Info(username + "--" + password)//对浏览器响应的内容c.WriteString(username + "--" + password)})

路径传参带key

app.Get("/user", func(context *context.Context) {userId := context.URLParam("userId")userName := context.URLParam("userName")app.Logger().Info(userId + "--" + userName)context.WriteString(userId + "--" + userName)})

路径传参不带key

//路径传参app.Get("/user/{userid:int64}/{username:string}", func(context *context.Context) {userid := context.Params().Get("userid")username := context.Params().Get("username")app.Logger().Info(userid + "--" + username)context.WriteString(userid + "--" + username)})

传递json

app.Post("user/json", func(context *context.Context) {//创建结构体,映射json字段,此处用匿名的,减少内存损耗,不匿名也可以var user1 = struct {Username string `json:"username"`Password string `json:"password"`}{}//读json赋值给usererr := context.ReadJSON(&user1)if err != nil {panic(err)}app.Logger().Info(user1)//返回给浏览器json,iris.map是一个转换json的方法context.JSON(iris.Map{"msg": user1.Username, "code": 200})})

路由组

类似前缀,关键词Party,并且可以写方法,类似init

页面跳转

目录结构如下

代码如下:

package mainimport ("github.com/kataras/iris/v12""github.com/kataras/iris/v12/context""net/http"
)func main() {app := iris.New()app.Use(iris.Compression)//页面渲染配置,从./view目录下加载扩展名是.html的所有模板,将reload设置为true可以热更新前端页面app.RegisterView(iris.HTML("./view", ".html").Reload(true))//静态资源目录设置app.HandleDir("static", http.Dir("./static"))app.Get("/index", func(context *context.Context) {context.ViewData("msg", "hello,dada")context.View("index.html")})app.Run(iris.Addr(":8080"))
}

错误页面响应

 //如果报404的处理逻辑app.OnErrorCode(iris.StatusNotFound, func(context *context.Context) {context.View("404.html")})

重定向

进入/index,如果login为false就重定向到login

 app.Get("/index", func(context *context.Context) {context.ViewData("msg", "hello,dada")login := falseif login {fmt.Println("xxx")} else {//设置重定向状态码302给contextcontext.StatusCode(302)//设置重定向的地址,location为/logincontext.Header("location", "/login")}})app.Get("/login", func(context *context.Context) {context.View("login.html")})

中间件

访问user之前或之后的操作,也可以指定为全局

package mainimport ("fmt""github.com/kataras/iris/v12""github.com/kataras/iris/v12/context"
)func main() {app := iris.New()app.Use(iris.Compression)//全局的前置处理app.Use(befer)//全局的后置处理app.Use(after)app.Get("/user", user)//app.Get("/user",befer,user,after)  只针对user的前置,后置处理app.Listen(":8080")}func user(c *context.Context) {fmt.Println("user")c.Next()
}func befer(c *context.Context) {c.Values().Set("msg", "hellodada")fmt.Println("befer")//继续到下一个处理器,不写的话,不会到下一个c.Next()
}func after(c *context.Context) {fmt.Println("after")fmt.Println(c.Values().Get("msg"))c.Next()
}

会话

以下代码模拟会话,用户登录后,服务端给客户端一个cookie,并且服务端有一个session,验证通过后,可以正常登录首页,可以通过注销或者消除会话方法进行退出。

package mainimport ("github.com/kataras/iris/v12""github.com/kataras/iris/v12/context""github.com/kataras/iris/v12/sessions"
)// 创建会话
var (cookie  = "sessonididid"session = sessions.New(sessions.Config{Cookie: cookie})
)func main() {app := iris.New()app.Use(iris.Compression)app.Get("/index", index)app.Get("/login", login)app.Get("/logout", logout)app.Get("/destroy", destroy)app.Listen(":8080")
}// 登录验证
func login(c *context.Context) {//将c与seesion建立连接sessions := session.Start(c)//身份验证逻辑判断//验证通过,给session赋值,truesessions.Set("authenticated", true)
}// 首页
func index(context *context.Context) {sessions := session.Start(context)//检查是否通过登录验证boolean, _ := sessions.GetBoolean("authenticated")if boolean == false {//响应302context.StatusCode(iris.StatusForbidden)return}context.WriteString("用户已经通过验证")}// 销毁会话
func destroy(c *context.Context) {//类似close,也可以起到注销的效果session.Destroy(c)
}// 注销
func logout(c *context.Context) {sessions := session.Start(c)//将存的authenticated改为falsesessions.Set("authenticated", false)}

go lris框架学习笔记相关推荐

  1. SpringMVC框架--学习笔记(下)

    接上篇:SpirngMVC框架--学习笔记(上):https://blog.csdn.net/a745233700/article/details/81038382 17.全局异常处理: 系统中异常包 ...

  2. SpringMVC框架--学习笔记(上)

    1.SpringMVC入门程序: (1)导入jar包:spring核心jar包.spring-webmvc整合Jar包 (2)配置前端控制器:web.xml文件中 <?xml version=& ...

  3. mybatis框架--学习笔记(下)

    上篇:mybatis框架--学习笔记(上):https://blog.csdn.net/a745233700/article/details/81034021 8.高级映射: (1)一对一查询: ①使 ...

  4. mybatis框架--学习笔记(上)

    使用JDBC操作数据库的问题总结: (1)数据库连接,使用时创建,不使用时立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能. 设想:使用数据库连接池管理数据库连接. (2) ...

  5. JavaSE中Map框架学习笔记

    前言:最近几天都在生病,退烧之后身体虚弱.头疼.在床上躺了几天,什么事情都干不了.接下来这段时间,要好好加快进度才好. 前面用了三篇文章的篇幅学习了Collection框架的相关内容,而Map框架相对 ...

  6. python表单提交的两种方式_Flask框架学习笔记之表单基础介绍与表单提交方式

    本文实例讲述了Flask框架学习笔记之表单基础介绍与表单提交方式.分享给大家供大家参考,具体如下: 表单介绍 表单是HTML页面中负责数据采集功能的部件.由表单标签,表单域和表单按钮组成.通过表单,将 ...

  7. php框架费尔康,GitHub - majixian/study-phalcon: phalcon(费尔康)框架学习笔记

    phalcon(费尔康)框架学习笔记 以实例程序invo为例(invo程序放在网站根目录下的invo文件夹里,推荐php版本>=5.4) 环境不支持伪静态网址时的配置 第一步: 在app\con ...

  8. [Spring+SpringMVC+Mybatis]框架学习笔记(四):Spring实现AOP

    上一章:[Spring+SpringMVC+Mybatis]框架学习笔记(三):Spring实现JDBC 下一章:[Spring+SpringMVC+Mybatis]框架学习笔记(五):SpringA ...

  9. Samza框架-----学习笔记

    Samza框架-----学习笔记 基本概念: 作业:是对一组输入流进行处理转化成输出流的程序. 分区: Samza的流数据单位既不是Storm中的元组,也不是Spark Streaming中的DStr ...

最新文章

  1. 【Java】剑指 Offer 52. 两个链表的第一个公共节点
  2. 从零开始发布web项目(五)
  3. Android Q适配
  4. vue打包路径.html问题,如何解决vue.js打包报错问题
  5. 微服务神经元(Neural)
  6. Linux 开发者最应该知道的命令汇总
  7. 计算器软件C语言课程设计实验报告,c简单计算器实验报告_相关文章专题_写写帮文库...
  8. busybox inittab
  9. android 维语 字体,维语字体手机版下载-维吾尔文字体apk下载 v2.0 安卓版-IT猫扑网...
  10. 小程序商城和h5商城那个比较好?
  11. 开发流程与管理--国内IT项目开发流程
  12. python手机端抢票大麦网_手把手教你用python抢票回家过年 !
  13. c语言怎么写最小公倍数的函数,C语言 · 最小公倍数
  14. node_modules删不掉
  15. 无线路由器介绍和有线路由器上网
  16. Configuring solrconfig.xml (1)
  17. ubuntu邮箱软件 Evolution 配置
  18. 微服务详讲:具体实践方法和基础设施简述
  19. JAVA一头母羊的寿命是5年_母羊生小羊,N年有多少羊问题
  20. VR实战案例 | HTC Vive射箭游戏-晴天-专题视频课程

热门文章

  1. 联想计算机boss设置,联想电脑如何进行bios设置 联想电脑bios设置教程
  2. 问题:解决Android中socket自动断开连接
  3. WebRTC服务器理论铺垫(六):OpenSSL协议,DTLS协议,RTP协议和SRTP协议
  4. 本杰明•富兰克林效应
  5. LCD1602和12864显示器-第1季第17部分-朱有鹏-专题视频课程
  6. html5 图形水平运动,搞明白这几张图,物理经典模型动图演示
  7. 【贴图、OCR】snipaste、天若OCR-win软件
  8. 双节临近:“中秋节”如何装修你的手机端店铺?
  9. 重头开始设计一个系统吧
  10. 常识——手机改直供电+usb调试