IRIS 框架

1、介绍

用go语言开发web架构,速度最快的web框架。

Iris是一款Go语言中用来开发web应用的框架,该框架支持编写一并在任何地方以最小的机器功率运行,如Android、ios、Linux和Windows等。该框架只需要一个可执行的服务就可以在平台上运行了。
Iris框架以简单而强大的api而被开发者所熟悉。iris除了为开发者提供非常简单的访问方式外,还同样支持MVC。另外,用iris构建微服务也很容易。

在iris框架的官方网站上,被称为速度最快的Go后端开发框架。在Iris的网站文档上,列出了该框架具备的一些特点和框架特性,列举如下:

1)聚焦高性能
2)健壮的静态路由支持和通配符子域名支持
3)视图系统支持超过5以上模板
4)支持定制事件的高可扩展性Websocket API
5)带有GC, 内存 & redis 提供支持的会话
6)方便的中间件和插件
7)完整 REST API
8)能定制 HTTP 错误
9)源码改变后自动加载

2 安装

通过设置GOPROXY=https://goproxy.io来使用代理进行包的下载

go get -u github.com/kataras/iris

简单案例:

//创建app结构对象
app := iris.New()
//端口监听
app.Run(iris.Addr(":8000"),iris.WithoutServerError(iris.ErrServerClosed))
//也可以之直接使用参1
//app.Run(iris.Addr(":8000"))
//注意此处的冒号不能忘记
//否则会报:[ERROR]listen tcp: address 8000: missing port in address

3 请求

get 请求 获取url中参数值: context.URLParam(“XXX”)

post请求 从表单中获取参数值: context.PostValue(“XXX”)

1) get 请求

   //处理Get请求app.Get("/userpath", func(context context.Context) {//获取Pathpath := context.Path()app.Logger().Info(path)//写入返回数据:string类型context.WriteString("请求路径:" + path)})//处理Get请求 并接受参数app.Get("/userinfo", func(context context.Context) {path := context.Path()app.Logger().Info(path)//获取get请求所携带的参数userName := context.URLParam("username") app.Logger().Info(userName)pwd := context.URLParam("pwd")//返回html数据格式context.HTML("<h1>" + userName + "," + pwd + "</h1>")})

(可以使用postman 测试api )

2)post 请求

//处理Post请求 form表单的字段获取app.Post("/postLogin", func(context context.Context) {path := context.Path()app.Logger().Info(path)//context.PostValue方法来获取post请求所提交的for表单数据name := context.PostValue("name")pwd := context.PostValue("pwd")app.Logger().Info(name, "  ", pwd)context.HTML(name)})

用postman测试

处理post请求 JSON格式

//处理Post请求 Json格式数据/*** Postman工具选择[{"key":"Content-Type","value":"application/json","description":""}]* 请求内容:{"name": "davie","age": 28}*/app.Post("/postJson", func(context context.Context) {//1.pathpath := context.Path()app.Logger().Info("请求URL:", path)//2.Json数据解析var person Person//context.ReadJSON()if err := context.ReadJSON(&person); err != nil {panic(err.Error())}//输出:Received: main.Person{Name:"davie", Age:28}context.Writef("Received: %#+v\n", person)})//自定义的structtype Person struct {Name string `json:"name"`Age  int    `json:"age"`    }

处理post请求XML格式数据

 //处理Post请求 Xml格式数据/*** 请求配置:Content-Type到application/xml(可选但最好设置)* 请求内容:**  <student>*        <stu_name>davie</stu_name>*     <stu_age>28</stu_age>*  </student>**/app.Post("/postXml", func(context context.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)})//自定义的结构体type Student struct {//XMLName xml.Name `xml:"student"`StuName string `xml:"stu_name"`StuAge  int    `xml:"stu_age"`}

请求数据返回格式

格式 语句
返回WriteString context.WriteString(“Hello world”)
返回html context.HTML("< h1> Davie, 12 < /h1>")
返回Json context.JSON(iris.Map{“message”: “hello word”, “requestCode”: 200})
返回XML context.XML(Person{Name: “Davie”, Age: 18})
返回Text context.Text(" text hello world ")
//json结构体
type Student struct {Name string `json:"name"`Age  int    `json:"age"`
}//xml结构体
type Person struct {Name string `xml:"name"`Age  int    `xml:"age"`
}

handle 方式处理请求

 //GET: http://localhost:8002/userinfo//其余同理app.Handle("GET", "/userinfo", func(context context.Context) {path := context.Path()app.Logger().Info(path)app.Logger().Error(" request path :", path)})

4 路由

1) 正则表达式路由

正则表达式的具体规则为:

1、使用{}对增则表达式进行包裹,url中出现类似{}样式的格式,即识别为正则表达式
2、支持自定义增则表达式的变量的命名,变量名用字母表示。比如:{name}

3、支持对自定义正则表达式变量的数据类型限制,变量名和对应的数据类型之间用“:”分隔开。比如:{name:string}表示增则表达式为name,类型限定为string类型

4、通过context.Params()的Get()和GetXxx()系列方法来获取对应的请求url中的增则表达式的变量
5、增则表达式支持变量的数据类型包括:string、int、uint、bool等

使用:context.Params().Get(“name”) 获取正则表达式变量

//      http://localhost:8002?date=20190310&city=beijing//GET: http://localhost:8002/weather/2020-04-10/beijing//      http://localhost:8002/weather/2020-04-11/beijing//      http://localhost:8002/weather/2020-04-13/tianjinapp.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)})/*** Get 正则表达式 路由* 使用:context.Params().Get("name") 获取正则表达式变量*/// 请求1:/hello/1  /hello/2  /hello/3 ... /hello/10000//正则表达式:{name}app.Get("/hello/{name}", func(context context.Context) {//获取变量path := context.Path()//获取正则表达式变量内容值name := context.Params().Get("name")context.HTML("<h1>" + name + "</h1>")})

自定义正则表达式变量路由请求{uint64:uint64}

app.Get("/api/users/{userid:uint64}", func(context context.Context) {userID, err := context.Params().GetUint("userid")if err != nil {//设置请求状态码,状态码可以自定义context.JSON(map[string]interface{}{"requestcode": 201,"message":     "bad request",})return}context.JSON(map[string]interface{}{"requestcode": 200,"user_id":     userID,})})

路由组

 userParty := app.Party("/users", func(context context.Context) {// 处理下一级请求context.Next()})/*** 路由组下面的下一级请求* ../users/register*/userParty.Get("/register", func(context context.Context) {app.Logger().Info("用户注册功能")context.HTML("<h1>用户注册功能</h1>")})//处理请求 ../users/login//处理请求 ../users/info ...

5 配置

1) 通过iris.Configuration{} 结构体进行配置

2) 通过读取tml配置文件进行配置

3) 通过读取yml配置文件进行配置

4) 通过json文件进行配置[读文件,解析]

app.Configure(iris.WithConfiguration( … ))

6 注册试图组件

app.RegisterView(iris.HTML("./views", “.html”))

【内容参考,B站的千峰教育的 go web iris实战框架的视频的。只有5节(后面的要付费,但是没找着,只找到了他的博客,https://me.csdn.net/qfzhangxu ),快的话2个小时就可以看完了】
感觉不管是之前的java的play框架、spring,还是现在的go的iris,这些web框架弄明白请求处理、路由、mvc运用,弄懂怎么使用这个框架应该是可以很快入门的。然后的话,就又是一条路走到黑。

IRIS 框架学习一相关推荐

  1. spring框架 web开发_go语言web开发框架学习:Iris框架讲解(一)

    Golang介绍 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软 ...

  2. spring框架 web开发_go语言web开发框架:Iris框架讲解(一)

    Golang介绍 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软 ...

  3. 【GO+Iris】Iris框架初识

    前言 关于Iris 安装Iris Host HTTP/2和安全 任意iris.Runner host配置 多个主机 优雅的关闭 带有TLS地自动公共域名 app.Run的第二个参数 使用配置 自定义值 ...

  4. jQuery框架学习第二天:jQuery中万能的选择器

    jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQu ...

  5. ssm框架requestmapping找不到_框架学习,就是介么简单

    框架学习 程序员凯小白 最近实训ssm框架,SSM框架,是Spring + Spring MVC + MyBatis的缩写,这个是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大 ...

  6. rose框架学习总结

    rose框架学习总结 rose框架为paoding rose框架 具体可见https://code.google.com/p/paoding-rose/ 1   对rose框架的整体认识 1.1B/S ...

  7. Hadoop学习笔记—18.Sqoop框架学习

    Hadoop学习笔记-18.Sqoop框架学习 一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据 ...

  8. jQuery框架学习第一天:开始认识jQuery

    jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQu ...

  9. Android接口和框架学习

    Android接口和框架学习 缩写: HAL:HardwareAbstraction Layer,硬件抽象层 CTS:CompatibilityTest Suite,兼容性测试套件 Android让你 ...

最新文章

  1. 你听说过反摩尔定律吗?
  2. Logback也爆漏洞了,总结下最近log相关的几个漏洞
  3. 写给那些想升职管理层的同学
  4. 苏黎世联邦理工学院SML课题组招收统计机器学习全奖博士生
  5. 循序渐进Python3(七) -- 2-- 面向对象进阶
  6. keygen基本流程
  7. 基于网络音频的Android播放程序简单示例
  8. 【杂谈】有三AI的一对一永久技术答疑服务,我们至少不会跑路
  9. linux密码忘记grub登陆,Linux忘记密码后使用grub重置密码
  10. 北航计算机和上财金融,这所985财经学府,不招本科生,隐藏实力却已超过上财、央财?...
  11. 尼康d850相机参数测试软件,尼康 - D850 - 产品介绍
  12. 有关 Lambda linq练习 有待整理
  13. 【安卓开发】按钮点击事件
  14. HBuilder 模拟器
  15. redux异步action_【第1586期】基于Redux/Vuex/MobX等库的通用化状态OOP
  16. servlet的请求转发与重定向
  17. 终于把W32.Spybot.Worm给消灭了(这个标题不能用了)
  18. 省市区三级联动(拼接写法)
  19. 报告丨前瞻产业研究院:2019年中国大数据行业研究报告
  20. 你的颜值打几分?——基于tensorflow实现人脸打分模型

热门文章

  1. 从零开始的OCR之旅
  2. 【云计算学习教程】与云计算相关的开源软件有哪些?
  3. 用友T6各模块数据传递关系培训资料
  4. 涉足荒野script_银行家如何自学编程,改变职业并涉足游戏开发
  5. 基于matlab的巴特沃斯滤波器设计
  6. 什么是域名被墙?域名被墙了如何解决?
  7. jtitle=Reactions Weekly,2013MBA联考英语试卷(附答案) 2
  8. CPC (Contrastive Predictive Coding)
  9. Zynga发售限量版FarmVille毛绒玩具
  10. SQL Server Management Studio(SSMS)无法连接到服务器,及解决方案