企业网站内容更新,石家庄专门做网站,网址的英文,中国城乡住房建设厅官网一、Gin
Go Web--Go Module 软件框架#xff08;software framework#xff09;#xff0c;通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范#xff0c;也指为了实现某个软件组件规范时#xff0c;提供规范所要求之基础功能的软件产品。 框架就是#…一、Gin
Go Web--Go Module 软件框架software framework通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范也指为了实现某个软件组件规范时提供规范所要求之基础功能的软件产品。 框架就是偷懒的程序员写代码发现写过了写的就是那些玩意码农只是代码的搬运工干脆将代码进行封装, 之后进行重复使用的过程。 使用框架,可以大大的提升开发的效率。 其实用GO语言标准库就可以完成web开发但是为什么使用框架呢框架就是一个别人搭建好的舞台有很多现成的工具可以提供给你用你在此基础上开发效率肯定更高。
Go的Web框架分两派 一派是基于标准库net/http的比如gin-gonic/ginlabstack/echoastaxie/beego 一派是基于valyala/fasthttp的更偏向于性能比如kataras/ iris , gofiber/fiber
1、Gin框架
Gin框架文档说明
2、新建Gin项目
Go Web--Go Module
1、下载并安装 gin
go get -u github.com/gin-gonic/gin
2、测试代码
package mainimport (github.com/gin-gonic/gin
)func main() {r : gin.Default()r.GET(/test, func(c *gin.Context) {c.JSON(200, gin.H{msg: test Gin success,})})r.Run()
} 访问测试http://localhost:8080/test 3、运行原理
package mainimport (github.com/gin-gonic/gin
)func Test(c *gin.Context) {c.JSON(200, gin.H{msg: test Gin success,})
}func main() {//Default()返回的是一个引擎Engine它是框架非常重要的数据结构是框架的入口。//引擎 - 框架核心发送机 - 默认服务器 - 整个web服务都是由它来驱动的//Default()底层调用了New()相当于New()的升级New()返回的是一个引擎//在此基础上多增加了中间件处理-engine.Use(Logger(), Recovery())r : gin.Default()//r : gin.New()//路由通过访问/test的GET请求走这一条处理逻辑走对应的函数中的内容///test : 路由规则 函数路由函数//路由请求方式GET、POST、DELETE、PATCH、PUT、OPTIONS、HEAD、Any//函数可以直接写匿名函数还可以在外部定义函数使用//r.GET(/test, func(c *gin.Context) {// c.JSON(200, gin.H{// msg: test Gin success,// })//})r.GET(/test, Test)//启动引擎 服务器启动//Run可以传入参数hostport//中间拼接的冒号一定不要忘记//r.Run()r.Run(:9999)//r.Run(192.168.0.171:9999)
}启动测试 4、数据交互
4.1、模板文件
1、Engine的LoadHTMLFiles方法不推荐
func (engine *Engine) LoadHTMLFiles(files ...string) {
加载子指定的模板文件
不定长参数可以传多个字符串使用这个方法需要指定所有要使用的html文件路径
2、Engine的LoadHTMLGlob方法推荐
func (engine *Engine) LoadHTMLGlob(pattern string) {
加载子文件夹下的模板文件
只有一个参数通配符如templates/* 意思是找当前项目路径下templates文件夹下所有的html文件
3、渲染HTML模板文件Context的HTML方法
func (c *Context) HTML(code int, name string, obj any) {
第一个参数状态码
第二个参数渲染的文件名
第三个参数传入参数空接口可以接受任意类型
HTTP状态码
创建templates文件夹下新建hello01.html和hello02.html
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
bodyHello01 World!
/body
/html
package mainimport (github.com/gin-gonic/gin
)func Test(context *gin.Context) {context.HTML(200, hello01.html, nil)
}func main() {r : gin.Default()//加载文件//r.LoadHTMLFiles(templates/hello01.html, templates/hello02.html)r.LoadHTMLGlob(templates/*)r.GET(/test, Test)r.Run()
}启动测试 多级目录模板指定
1、如果有多级目录比如templates下有demo01和demo02两个目录如果要使用里面的html文件
必须得在Load的时候指定多级才可以
比如
r.LoadHTMLGlob(templates/**/*)2、指定html文件除了第一级的templates路径不需要指定后面的路径都要指定
context.HTML(200, demo02/hello02.html, nil)
3、在html中define定义目录
{{define demo02/hello02.html}}
html langen
headmeta charsetUTF-8titleTitle/title
/head
bodyDemo02 Hello02 World!
/body
/html
{{end}} package mainimport (github.com/gin-gonic/gin
)func Test(context *gin.Context) {context.HTML(200, demo02/hello02.html, nil)
}func main() {r : gin.Default()//加载文件//r.LoadHTMLFiles(templates/hello01.html, templates/hello02.html)r.LoadHTMLGlob(templates/**/*)r.GET(/test, Test)r.Run()
}启动测试 Golang学习深入(一)
永远不要让无法完全信任的人知道你真正的实力有多少