IRIS 框架学习一
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 框架学习一相关推荐
- spring框架 web开发_go语言web开发框架学习:Iris框架讲解(一)
Golang介绍 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软 ...
- spring框架 web开发_go语言web开发框架:Iris框架讲解(一)
Golang介绍 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软 ...
- 【GO+Iris】Iris框架初识
前言 关于Iris 安装Iris Host HTTP/2和安全 任意iris.Runner host配置 多个主机 优雅的关闭 带有TLS地自动公共域名 app.Run的第二个参数 使用配置 自定义值 ...
- jQuery框架学习第二天:jQuery中万能的选择器
jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQu ...
- ssm框架requestmapping找不到_框架学习,就是介么简单
框架学习 程序员凯小白 最近实训ssm框架,SSM框架,是Spring + Spring MVC + MyBatis的缩写,这个是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大 ...
- rose框架学习总结
rose框架学习总结 rose框架为paoding rose框架 具体可见https://code.google.com/p/paoding-rose/ 1 对rose框架的整体认识 1.1B/S ...
- Hadoop学习笔记—18.Sqoop框架学习
Hadoop学习笔记-18.Sqoop框架学习 一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据 ...
- jQuery框架学习第一天:开始认识jQuery
jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQu ...
- Android接口和框架学习
Android接口和框架学习 缩写: HAL:HardwareAbstraction Layer,硬件抽象层 CTS:CompatibilityTest Suite,兼容性测试套件 Android让你 ...
最新文章
- 你听说过反摩尔定律吗?
- Logback也爆漏洞了,总结下最近log相关的几个漏洞
- 写给那些想升职管理层的同学
- 苏黎世联邦理工学院SML课题组招收统计机器学习全奖博士生
- 循序渐进Python3(七) -- 2-- 面向对象进阶
- keygen基本流程
- 基于网络音频的Android播放程序简单示例
- 【杂谈】有三AI的一对一永久技术答疑服务,我们至少不会跑路
- linux密码忘记grub登陆,Linux忘记密码后使用grub重置密码
- 北航计算机和上财金融,这所985财经学府,不招本科生,隐藏实力却已超过上财、央财?...
- 尼康d850相机参数测试软件,尼康 - D850 - 产品介绍
- 有关 Lambda linq练习 有待整理
- 【安卓开发】按钮点击事件
- HBuilder 模拟器
- redux异步action_【第1586期】基于Redux/Vuex/MobX等库的通用化状态OOP
- servlet的请求转发与重定向
- 终于把W32.Spybot.Worm给消灭了(这个标题不能用了)
- 省市区三级联动(拼接写法)
- 报告丨前瞻产业研究院:2019年中国大数据行业研究报告
- 你的颜值打几分?——基于tensorflow实现人脸打分模型
热门文章
- 从零开始的OCR之旅
- 【云计算学习教程】与云计算相关的开源软件有哪些?
- 用友T6各模块数据传递关系培训资料
- 涉足荒野script_银行家如何自学编程,改变职业并涉足游戏开发
- 基于matlab的巴特沃斯滤波器设计
- 什么是域名被墙?域名被墙了如何解决?
- jtitle=Reactions Weekly,2013MBA联考英语试卷(附答案) 2
- CPC (Contrastive Predictive Coding)
- Zynga发售限量版FarmVille毛绒玩具
- SQL Server Management Studio(SSMS)无法连接到服务器,及解决方案