当前位置: 首页 > news >正文

go语言 常用的web框架

go语言 常用的web框架

    • 1. Gin
    • 2. Echo
    • 3. Beego
    • 4.GoFrame

Go语言有许多流行的web框架,以下是其中几个:

1. Gin

  • Gin是一个高性能的HTTP web框架,具有简洁的API和快速的路由引擎。它也有许多中间件和插件,方便开发者进行功能扩展。
  • 代码示例:
    package mainimport ("github.com/gin-gonic/gin""net/http"
    )func main() {r := gin.Default()r.GET("/", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "Hello, Gin!",})})r.Run(":8080")
    }
    
  • 使用步骤:
    • 安装Gin:go get -u github.com/gin-gonic/gin
    • 创建main.go文件并粘贴上述代码
    • 在终端中运行:go run main.go

2. Echo

  • Echo是一个快速而简洁的Web框架,它具有强大的路由和中间件支持。它的设计目标是提供一个简单、易用、高性能和可扩展的框架。
  • 代码示例:
    package mainimport ("net/http""github.com/labstack/echo/v4"
    )func main() {e := echo.New()e.GET("/", func(c echo.Context) error {return c.String(http.StatusOK, "Hello, Echo!")})e.Start(":8080")
    }
    
  • 使用步骤:
    • 安装Echo:go get -u github.com/labstack/echo/v4
    • 创建main.go文件并粘贴上述代码
    • 在终端中运行:go run main.go

3. Beego

  • Beego是一个开源的Web框架,它具有高性能、灵活的API设计和强大的功能。它支持自动路由、ORM、会话管理、国际化、验证等功能。
  • 代码示例:
    package mainimport ("github.com/astaxie/beego"
    )func main() {beego.Router("/", &MainController{})beego.Run(":8080")
    }type MainController struct {beego.Controller
    }func (c *MainController) Get() {c.Data["message"] = "Hello, Beego!"c.TplName = "index.tpl"
    }
    
  • 使用步骤:
    • 安装Beego:go get -u github.com/astaxie/beego
    • 创建main.go文件并粘贴上述代码
    • 创建index.tpl文件,内容为<h1>{{.message}}</h1>
    • 在终端中运行:go run main.go

4.GoFrame

GoFrame是一款基于Go语言的开源Web框架,它提供了一套完整的工具和组件,用于简化Web应用程序的开发过程。下面将详细介绍GoFrame框架的使用,并提供一些代码示例。

一、安装GoFrame:
首先,你需要确保已经安装了Go语言的开发环境。然后,可以使用以下命令安装GoFrame框架:

go get -u github.com/gogf/gf

二、创建一个简单的Web应用:
下面是一个简单示例,用于创建一个基于GoFrame的Web应用程序。

1.创建一个名为main.go的文件,并添加以下代码:

package mainimport ("github.com/gogf/gf/frame/g""github.com/gogf/gf/net/ghttp"
)func main() {s := g.Server()s.BindHandler("/", func(r *ghttp.Request) {r.Response.Write("Hello, GoFrame!")})s.Run()
}

2.在终端中进入该文件所在的目录,并运行以下命令启动应用程序:

go run main.go

3.在浏览器中访问http://localhost:8080/,即可看到输出结果Hello, GoFrame!。
以上示例代码中,首先导入了ghttp和g模块,分别提供了HTTP服务器和一些常用的工具函数。然后,创建了一个服务器实例s,并使用BindHandler绑定了一个根路径的处理函数,该处理函数接收一个*ghttp.Request作为参数,并向响应中写入一条消息。最后,调用s.Run()启动服务器。

三、路由和中间件:
GoFrame框架支持路由功能,可以定义多个路由规则,并为每个路由规则绑定相应的处理函数。

1.添加一个路由规则:

s.BindHandler("/user/info/{id}.html", func(r *ghttp.Request) {id := r.Get("id")r.Response.Write("User id is: " + id)
})

2.使用中间件:

s.BindMiddleware("/user/*any", func(r *ghttp.Request) {r.Response.Write("Before executing handler function...")r.Middleware.Next()r.Response.Write("After executing handler function...")
})

上述示例中,第一个示例添加了一个带有{id}参数的路由规则,当访问/user/info/123.html时,会将123作为参数传递给处理函数,并输出"User id is: 123"。第二个示例添加了一个中间件,该中间件会在处理函数执行前后输出相应的提示信息。

四、模板引擎:
GoFrame框架内置了一套简单而强大的模板引擎,可以方便地用于生成动态页面。

1.创建一个模板文件index.html,内容如下:

<html>
<head><title>GoFrame Template</title>
</head>
<body><h1>{{.Title}}</h1><p>{{.Content}}</p>
</body>
</html>

2.修改main.go文件,添加以下代码:

s.BindHandler("/index", func(r *ghttp.Request) {r.Response.Assign("Title", "Welcome to GoFrame")r.Response.Assign("Content", "This is a template example")r.Response.RenderFile("index.html")
})

3.运行应用程序,并访问http://localhost:8080/index,即可看到模板渲染后的结果。

上述示例中,首先创建了一个模板文件index.html,使用{{.}}表示模板中的变量,然后在处理函数中通过Response.Assign方法为模板变量赋值,最后使用Response.RenderFile方法渲染输出。

相关文章:

  • MySQL优化相关(持续积累...)
  • 电影票接口api对接有哪些优势?
  • 无源码实现免登录功能
  • 如何用ChatGPT制作一款手机游戏应用
  • 10.1 刷题
  • 大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
  • unity一键注释日志和反注释日志
  • Linux启动mysql报错
  • 字符和Ascll码表
  • android compose ScrollableTabRow indicator 指示器设置宽度
  • uni-app #ifdef #ifndef #endif的使用和区别
  • 【架构】NewSQL
  • 去中心化自治组织(DAO)
  • [Python学习日记-34] 一篇文章让你弄懂 Python 中牛逼的递归函数
  • 【前端安全】js逆向之微信公众号登录密码
  • 2017 前端面试准备 - 收藏集 - 掘金
  • CEF与代理
  • Java 最常见的 200+ 面试题:面试必备
  • java概述
  • jquery cookie
  • Map集合、散列表、红黑树介绍
  • Otto开发初探——微服务依赖管理新利器
  • SpingCloudBus整合RabbitMQ
  • tab.js分享及浏览器兼容性问题汇总
  • 初识MongoDB分片
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 学习笔记:对象,原型和继承(1)
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 智能网联汽车信息安全
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • Hibernate主键生成策略及选择
  • 树莓派用上kodexplorer也能玩成私有网盘
  • 正则表达式-基础知识Review
  • #70结构体案例1(导师,学生,成绩)
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (02)Hive SQL编译成MapReduce任务的过程
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (rabbitmq的高级特性)消息可靠性
  • (ZT)出版业改革:该死的死,该生的生
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (二)测试工具
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (回溯) LeetCode 40. 组合总和II
  • (面试必看!)锁策略
  • (三)模仿学习-Action数据的模仿
  • (原)本想说脏话,奈何已放下
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)Windows2003安全设置/维护
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .Net Core 微服务之Consul(二)-集群搭建
  • .net mvc 获取url中controller和action