Web应用程序(Web Application) 是一种通过网络(通常是互联网)访问的软件应用程序。与传统的桌面应用程序不同,Web应用程序运行在Web浏览器中,并通过与远程服务器的交互来提供功能和服务。用户可以通过在浏览器中输入URL或点击链接来访问Web应用程序。 Gin 是一款基于 Go 语言的轻量级 Web 框架,广受开发者欢迎,因其快速、高效和易用而备受瞩目。
基本概念: Gin 是一个用 Go (Golang) 编写的 Web 框架。 它具有类似 martini 的 API,性能要好得多,多亏了 httprouter,速度提高了 40 倍。 基本概念:
- 路由和处理器: Gin 使用路由来匹配 URL 请求,然后将请求发送到相应的处理器函数。路由定义了 URL 和处理器函数之间的映射关系,使得请求可以被正确处理。
- 中间件: Gin 提供了中间件机制,允许开发者在请求处理之前或之后添加额外的逻辑。这对于认证、日志记录、跨域处理等场景非常有用。
- 上下文(Context): Gin 的上下文对象将请求和响应信息封装在一起,方便在处理器函数中访问这些数据。它还提供了很多有用的方法来操作请求和响应。
特性
快速
基于 Radix 树的路由,小内存占用。没有反射。可预测的 API 性能。
支持中间件
传入的 HTTP 请求可以由一系列中间件和最终操作来处理。 例如:Logger,Authorization,GZIP,最终操作 DB。
Crash 处理
Gin 可以 catch 一个发生在 HTTP 请求中的 panic 并 recover 它。这样,你的服务器将始终可用。例如,你可以向 Sentry 报告这个 panic!
JSON 验证
Gin 可以解析并验证请求的 JSON,例如检查所需值的存在。
路由组
更好地组织路由。是否需要授权,不同的 API 版本…… 此外,这些组可以无限制地嵌套而不会降低性能。
错误管理
Gin 提供了一种方便的方法来收集 HTTP 请求期间发生的所有错误。最终,中间件可以将它们写入日志文件,数据库并通过网络发送。
内置渲染
Gin 为 JSON,XML 和 HTML 渲染提供了易于使用的 API。 Gin使用示例
package main
import "github.com/gin-gonic/gin"
func main() {
router := gin.Default()
router.Run(":8080")
}
这里启动一个8080端口。
func InitCoreRouter() {
userApi := api.NewUserApi()
videoApi := api.NewVideoApi()
messageApi := api.NewMessageApi()
relationApi := api.NewRelationApi()
favoriteApi := api.NewFavoriteApi()
commentApi := api.NewCommentApi()
RegistRouter(func(rg *gin.RouterGroup) {
rg.GET("/feed/", videoApi.FeedVideo)
rg.GET("/user/", userApi.UserInfo)
userGroup := rg.Group("/user")
userGroup.POST("/register/", userApi.UserRegister)
userGroup.POST("/login/", userApi.UserLogin)
publishGroup := rg.Group("/publish")
publishGroup.POST("/action/", videoApi.PublishVideo)
publishGroup.GET("/list/", videoApi.PublishList)
relationGroup := rg.Group("/relation")
relationGroup.POST("/action/", relationApi.RelationAction)
relationGroup.GET("/follow/list/", relationApi.FollowList)
relationGroup.GET("/follower/list/", relationApi.FollowerList)
relationGroup.GET("/friend/list/", relationApi.FriendList)
messageGroup := rg.Group("/message")
messageGroup.GET("/chat/", messageApi.MessageChat)
messageGroup.POST("/action/", messageApi.MessageAction)
favoriteGroup := rg.Group("/favorite")
favoriteGroup.POST("/action/", favoriteApi.FavoriteAction)
favoriteGroup.GET("/list/", favoriteApi.GetFavoriteList)
commentGroup := rg.Group("/comment")
commentGroup.POST("/action/", commentApi.CommentAction)
commentGroup.GET("/list/", commentApi.GetCommentList)
})
}
`` 这个是简单调用。