福田网站建设多少钱,广州代运营公司有哪些,河南省建设科技网站,wordpress建站空间推荐〇、gin 路由
Gin是一个用于构建Web应用程序的Go语言框架#xff0c;它具有简单、快速、灵活的特点。在Gin中#xff0c;可以使用路由来定义URL和处理程序之间的映射关系。
r : gin.Default()// 访问 /index 这个路由// 获取信息r.GET(/index, func(c *gin.Con…〇、gin 路由
Gin是一个用于构建Web应用程序的Go语言框架它具有简单、快速、灵活的特点。在Gin中可以使用路由来定义URL和处理程序之间的映射关系。
r : gin.Default()// 访问 /index 这个路由// 获取信息r.GET(/index, func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{method: GET,})})// 提交r.POST(/index, func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{method: POST,})})// 更新数据r.PUT(/index, func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{method: PUT,})})// 删除数据r.DELETE(/index, func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{method: DELETE,})})还有一个可以匹配所有请求方法的Any方法如下
// 请求方法大杂烩r.Any(/user, func(c *gin.Context) {switch c.Request.Method {case GET:c.JSON(http.StatusOK, gin.H{method: GET,})case PUT:c.JSON(http.StatusOK, gin.H{method: PUT,})}c.JSON(http.StatusOK, gin.H{method: Any,})})如果没有配到路由怎么办我们有时候输入了一个错误的地址这时候服务器应该报 404 错误并且返回一个特定的页面 在 gin 框架下我们可以利用r.NoRoute()这样写 r.NoRoute(func(c *gin.Context) {c.JSON(http.StatusNotFound, gin.H{msg: 你似乎来到了陌生的地带~,})})运行结果为
一、路由组
如果我们想实现很多的这样的路由
http://127.0.0.1:9001/user/ahttp://127.0.0.1:9001/user/bhttp://127.0.0.1:9001/user/chttp://127.0.0.1:9001/user/d
如果一条一条写将会很繁琐于是路由组的概念就被提出来了。路由组是递归定义的也就是说路由组的成员也可以是一个路由组
http://127.0.0.1:9001/user/a/1http://127.0.0.1:9001/user/a/2http://127.0.0.1:9001/user/a/3http://127.0.0.1:9001/user/a/4
videoGroup : r.Group(/video){videoGroup.GET(/index, func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{msg: /video/index,})})videoGroup.GET(/xxx, func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{msg: video/xxx,})})videoGroup.GET(/ooo, func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{msg: video/ooo,})})}运行结果如下 二、中间件
Gin框架允许开发者在处理请求的过程中加入用户自己的钩子Hook函数。这个钩子函数就叫中间件中间件适合处理一些公共的业务逻辑比如登录认证、权限校验、数据分页、记录日志、耗时统计等。
比如以下就是一个很简单的中间件的示例
func indexHandler(c *gin.Context) {c.JSON(http.StatusOK, gin.H{index: Ok,})
}配合 main 函数使用
func main() {r : gin.Default()r.GET(/index, indexHandler,func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{shop: welcome!,})})r.Run(:9001)}GET请求的时候程序会自动执行 indexHandler()这个函数然后才会继续执行后面的匿名函数。因此indexHandler()就叫做中间件。
再来看看更为一般的中间件
// 定义一个新的中间件
func m1(c *gin.Context) {c.JSON(http.StatusOK, gin.H{m1: before!,})start : time.Now()c.Next() // 停止调用后续的函数cost : time.Since(start)fmt.Printf(花费时间:%v\n, cost)c.JSON(http.StatusOK, gin.H{m1: after!,})}这个中间件有具有更完整的功能了。首先它会打印m1: before!之后它会获取一个时间戳然后会调用后面的handler也就是匿名函数这个指示由c.Next()发出这个函数运行完成后会打印真个过程消耗的时间。之后这个中间件继续会打印m1: after!。
运行结果如下 全文完感谢阅读。