详解Golang Iris框架的基本使用_Golang_脚本之家


本站和网页 https://www.jb51.net/article/200786.htm 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

详解Golang Iris框架的基本使用_Golang_脚本之家
脚本之家
服务器常用软件
手机版
投稿中心
关注微信
快捷导航
软件下载
android
MAC
驱动下载
字体下载
DLL
源码下载
PHP
ASP.NET
ASP
JSP
软件编程
C#
JAVA
C 语言
Delphi
Android
网络编程
PHP
ASP.NET
ASP
JavaScript
在线工具
CSS格式化
JS格式化
Html转化为Js
数据库
MYSQL
MSSQL
oracle
DB2
MARIADB
CMS
PHPCMS
DEDECMS
帝国CMS
WordPress
常用工具
PHP开发工具
python
Photoshop
必备软件
网站首页
网页制作
网络编程
脚本专栏
脚本下载
数据库
服务器
电子书籍
操作系统
网站运营
平面设计
其它
媒体动画
电脑基础
硬件教程
网络安全
vbs
DOS/BAT
hta
htc
python
perl
游戏相关
VBA
远程脚本
ColdFusion
ruby专题
autoit
seraphzone
PowerShell
linux shell
Lua
Golang
Erlang
其它
您的位置:首页 → 脚本专栏 → Golang → Golang Iris框架使用
详解Golang Iris框架的基本使用
更新时间:2020年11月27日 11:29:44 作者:WillAlso
这篇文章主要介绍了Golang Iris框架的基本使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
目录1. Iris框架1.1 Golang框架1.2 安装Iris2. 使用Iris构建服务端2.1 简单例子1——直接返回消息2.2 简单例子2——使用HTML模板2.3 路由处理2.4 使用中间件2.5 使用文件记录日志Iris介绍
编写一次并在任何地方以最小的机器功率运行,如Android、ios、Linux和Windows等。它支持Google Go,只需一个可执行的服务即可在所有平台。 Iris以简单而强大的api而闻名。 除了Iris为您提供的低级访问权限。 Iris同样擅长MVC。 它是唯一一个拥有MVC架构模式丰富支持的Go Web框架,性能成本接近于零。 Iris为您提供构建面向服务的应用程序的结构。 用Iris构建微服务很容易。
1. Iris框架
1.1 Golang框架
  Golang常用框架有:Gin、Iris、Beego、Buffalo、Echo、Revel,其中Gin、Beego和Iris较为流行。Iris是目前流行Golang框架中唯一提供MVC支持(实际上Iris使用MVC性能会略有下降)的框架,并且支持依赖注入,使用入门简单,能够快速构建Web后端,也是目前几个框架中发展最快的,从2016年截止至目前总共有17.4k stars(Gin 35K stars)。
Iris is a fast, simple yet fully featured and very efficient web framework for Go. It provides a beautifully expressive and easy to use foundation for your next website or API.
1.2 安装Iris
Iris官网:https://iris-go.com/
Iris Github:https://github.com/kataras/iris
# go get -u -v 获取包
go get github.com/kataras/iris/v12@latest
# 可能提示@latest是错误,如果版本大于11,可以使用下面打开GO111MODULE选项
# 使用完最好关闭,否则编译可能出错
go env -w GO111MODULE=on
# go get失败可以更改代理
go env -w GOPROXY=https://goproxy.cn,direct
2. 使用Iris构建服务端
2.1 简单例子1——直接返回消息
package main
import (
"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")
// 设置recover从panics恢复,设置log记录
app.Use(recover.New())
app.Use(logger.New())
app.Handle("GET", "/", func(ctx iris.Context) {
ctx.HTML("<h1>Hello Iris!</h1>")
})
app.Handle("GET", "/getjson", func(ctx iris.Context) {
ctx.JSON(iris.Map{"message": "your msg"})
})
app.Run(iris.Addr("localhost:8080"))
其他便捷设置方法:
// 默认设置日志和panic处理
app := iris.Default()
我们可以看到iris.Default()的源码:
// 注:默认设置"./view"为html view engine目录
func Default() *Application {
app := New()
app.Use(recover.New())
app.Use(requestLogger.New())
app.defaultMode = true
return app
2.2 简单例子2——使用HTML模板
package main
import "github.com/kataras/iris/v12"
func main() {
app := iris.New()
// 注册模板在work目录的views文件夹
app.RegisterView(iris.HTML("./views", ".html"))
app.Get("/", func(ctx iris.Context) {
// 设置模板中"message"的参数值
ctx.ViewData("message", "Hello world!")
// 加载模板
ctx.View("hello.html")
})
app.Run(iris.Addr("localhost:8080"))
上述例子使用的hello.html模板
<html>
<head>
<title>Hello Page</title>
</head>
<body>
<h1>{{ .message }}</h1>
</body>
</html>
2.3 路由处理
上述例子中路由处理,可以使用下面简单替换,分别针对HTTP中的各种方法
app.Get("/someGet", getting)
app.Post("/somePost", posting)
app.Put("/somePut", putting)
app.Delete("/someDelete", deleting)
app.Patch("/somePatch", patching)
app.Head("/someHead", head)
app.Options("/someOptions", options)
例如,使用路由“/hello”的Get路径
app.Get("/hello", handlerHello)
func handlerHello(ctx iris.Context) {
ctx.WriteString("Hello")
// 等价于下面
app.Get("/hello", func(ctx iris.Context) {
ctx.WriteString("Hello")
})
2.4 使用中间件
app.Use(myMiddleware)
func myMiddleware(ctx iris.Context) {
ctx.Application().Logger().Infof("Runs before %s", ctx.Path())
ctx.Next()
2.5 使用文件记录日志
整个Application使用文件记录
上述记录日志
// 获取当前时间
now := time.Now().Format("20060102") + ".log"
// 打开文件,如果不存在创建,如果存在追加文件尾,权限为:拥有者可读可写
file, err := os.OpenFile(now, os.O_CREATE | os.O_APPEND, 0600)
defer file.Close()
if err != nil {
app.Logger().Errorf("Log file not found")
// 设置日志输出为文件
app.Logger().SetOutput(file)
到文件可以和中间件结合,以控制不必要的调试信息记录到文件
func myMiddleware(ctx iris.Context) {
now := time.Now().Format("20060102") + ".log"
file, err := os.OpenFile(now, os.O_CREATE | os.O_APPEND, 0600)
defer file.Close()
if err != nil {
ctx.Application().Logger().SetOutput(file).Errorf("Log file not found")
os.Exit(-1)
ctx.Application().Logger().SetOutput(file).Infof("Runs before %s", ctx.Path())
ctx.Next()
上述方法只能打印Statuscode为200的路由请求,如果想要打印其他状态码请求,需要另使用
app.OnErrorCode(iris.StatusNotFound, func(ctx iris.Context) {
now := time.Now().Format("20060102") + ".log"
file, err := os.OpenFile(now, os.O_CREATE | os.O_APPEND, 0600)
defer file.Close()
if err != nil {
ctx.Application().Logger().SetOutput(file).Errorf("Log file not found")
os.Exit(-1)
ctx.Application().Logger().SetOutput(file).Infof("404")
ctx.WriteString("404 not found")
})
&#8195;&#8195;Iris有十分强大的路由处理程序,你能够按照十分灵活的语法设置路由路径,并且如果没有涉及正则表达式,Iris会计算其需求预先编译索引,用十分小的性能消耗来完成路由处理。
注:ctx.Params()和ctx.Values()是不同的,下面是官网给出的解释:
Path parameter's values can be retrieved from ctx.Params()Context's local storage that can be used to communicate between handlers and middleware(s) can be stored to ctx.Values() .
Iris可以使用的参数类型
Param Type
Go Type
Validation
Retrieve Helper
:string
string
anything (single path segment)
Params().Get
:int
int
-9223372036854775808 to 9223372036854775807 (x64) or -2147483648 to 2147483647 (x32), depends on the host arch
Params().GetInt
:int8
int8
-128 to 127
Params().GetInt8
:int16
int16
-32768 to 32767
Params().GetInt16
:int32
int32
-2147483648 to 2147483647
Params().GetInt32
:int64
int64
-9223372036854775808 to 92233720368&#63;4775807
Params().GetInt64
:uint
uint
0 to 18446744073709551615 (x64) or 0 to 4294967295 (x32), depends on the host arch
Params().GetUint
:uint8
uint8
0 to 255
Params().GetUint8
:uint16
uint16
0 to 65535
Params().GetUint16
:uint32
uint32
0 to 4294967295
Params().GetUint32
:uint64
uint64
0 to 18446744073709551615
Params().GetUint64
:bool
bool
“1” or “t” or “T” or “TRUE” or “true” or “True” or “0” or “f” or “F” or “FALSE” or “false” or “False”
Params().GetBool
:alphabetical
string
lowercase or uppercase letters
Params().Get
:file
string
lowercase or uppercase letters, numbers, underscore (_), dash (-), point (.) and no spaces or other special characters that are not valid for filenames
Params().Get
:path
string
anything, can be separated by slashes (path segments) but should be the last part of the route path
Params().Get
在路径中使用参数
app.Get("/users/{id:uint64}", func(ctx iris.Context){
id := ctx.Params().GetUint64Default("id", 0)
})
使用post传递参数
app.Post("/login", func(ctx iris.Context) {
username := ctx.FormValue("username")
password := ctx.FormValue("password")
ctx.JSON(iris.Map{
"Username": username,
"Password": password,
})
})
以上就是Iris的基本入门使用,当然还有更多其他操作:中间件使用、正则表达式路由路径的使用、Cache、Cookie、Session、File Server、依赖注入、MVC等的用法,可以参照官方教程使用,后期有时间会写文章总结。
到此这篇关于详解Golang Iris框架的基本使用的文章就介绍到这了,更多相关Golang Iris框架使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:Golang+Vue轻松构建Web应用的方法步骤使用Golang搭建web服务的实现步骤golang实现一个简单的websocket聊天室功能Golang使用WebSocket通信的实现golang 设置web请求状态码操作Golang Web 框架Iris安装部署
Golang
Iris
框架
相关文章
Go语言Mock使用基本指南详解这篇文章主要介绍了Go语言Mock使用基本指南详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 2020-06-06
Mac GoLand打不开(闪退)也不报错的解决方案这篇文章主要介绍了Mac GoLand打不开(闪退)也不报错的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 2021-04-04
详解用Go语言实现工厂模式(Golang经典编程案例)这篇文章主要介绍了详解用Go语言实现工厂模式(Golang经典编程案例),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 2021-04-04
Go语言中的if条件语句使用详解这篇文章主要介绍了Go语言中的if条件语句的使用,包括if...else语句以及相关嵌套,需要的朋友可以参考下 2015-10-10
golang 实现两个结构体复制字段这篇文章主要介绍了golang 实现两个结构体复制字段,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 2021-04-04
Golang学习笔记之安装Go1.15版本(win/linux/macos/docker安装)这篇文章主要介绍了Golang学习笔记之安装Go1.15版本(win/linux/macos/docker安装),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 2020-12-12
Go语言模拟while语句实现无限循环的方法这篇文章主要介绍了Go语言模拟while语句实现无限循环的方法,实例分析了for语句模拟while语句的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 2015-02-02
如何使用Go语言实现远程执行命令远程执行命令最常用的方法就是利用SSH协议,将命令发送到远程机器上执行,并获取返回结果。本文将介绍如何使用Go语言实现远程执行命令。下面一起来看看。 2016-08-08
Go Web 编程中的模板库应用指南(超详细)这篇文章主要介绍了Go Web 编程中的模板库应用指南,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 2020-03-03
goFrame的gqueue与channe的区别这篇文章主要介绍了goFrame的gqueue与channe的区别,channel的作用是用于go协程间的通信,goroutine和channel是支持高并发的重要组成部分,更多两者详细介绍需要的小伙伴可以参考下面文章内容 2022-06-06
最新评论
大家感兴趣的内容
1Go语言string,int,int64 ,float之间类2Goland激活码破解永久版及安装详细教程(亲测可以)3Go语言中的Array、Slice、Map和Set使用详解4Go语言的GOPATH与工作目录详解5Go语言转换所有字符串为大写或者小写的方法6Go语言interface详解7五步让你成为GO 语言高手8Go语言命令行操作命令详细介绍9Go语言编程中字符串切割方法小结10我放弃Python转Go语言的9大理由(附优秀书籍推荐)
最近更新的内容
一文完全掌握 Go math/rand(源码解析)Go语言实现的排列组合问题实例(n个数中取m个)golang 解析word文档操作Go语言实现遗传算法的实例代码如何使用go-zero开发线上项目Go语言开发浏览器视频流rtsp转webrtc播放Go 在 MongoDB 中常用查询与修改的操作golang实现sql结果集以json格式输出的方法go:垃圾回收GC触发条件详解快速掌握Go 语言 HTTP 标准库的实现方法
常用在线小工具
微信
投稿
脚本任务
在线工具
关注微信公众号
关于我们 -
广告合作 -
联系我们 -
免责声明 -
网站地图 -
投诉建议 -
在线投稿
CopyRight 2006-2022 JB51.Net Inc All Rights Reserved. 脚本之家 版权所有