gin框架使用系列之一——快速启动和url分组

  gin是go语言常用的web框架,在go语言的web体系和微服务体系中经常会出现,所以学习gin框架在go开发中非常有必要,由于博客的篇幅限制,我将学习到的gin常用的方法写成一个系列,以便在工作和学习中使用。

一、gin的快速启动

  gin的使用非常简单,只需要以下几步:

1.1、 导入gin的依赖:import “github.com/gin-gonic/gin”

  • 如果使用最新的go.mod模式,只需要在go.mod文件中加入如下依赖即可
require (
	github.com/gin-gonic/gin v1.9.1
}
  • 如果是原来的包管理方式,则需要用如下命令导入gin的包
go get -u github.com/gin-gonic/gin

1.2、编写启动代码

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	router := gin.Default()
	router.GET("/ping", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"message": "pong",
		})
	})
	router.Run() // listen and serve on 0.0.0.0:8080
}

在gin中,使用router来注册对应的http的api,其执行的是func(*Context)类型的函数,所以在实际的开发中,我们只需要按照规则写好执行函数即可。

二、gin的url分组

所谓的url分组,指的是一组前缀相同的url,比如下面的url

http://localhost:8080/user/list
http://localhost:8080/user/add
http://localhost:8080/user/delete

上面的url中,/user/的路径是相同的,我们就可以将其视为一个分组,在进行url的注册时,只需要设置一次上层的/user/目录,下面就不需要在写这个目录,gin框架会自动加上对应的公共部分。

具体实现方式如下:

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	router := gin.Default()
	// 1、首先获得一个RouterGroup
	userGroup := router.Group("/user")
	// 2、在对应的userGroup中增加对应的url
	userGroup.GET("/list", listUsers)
	userGroup.POST("/add", addUser)
	userGroup.DELETE("/delete", deleteUser)
	router.Run() // listen and serve on 0.0.0.0:8080
}
func deleteUser(context *gin.Context) {
	context.JSONP(http.StatusOK, gin.H{
		"msssage": "deleteUser",
	})
}
func addUser(context *gin.Context) {
	context.JSONP(http.StatusOK, gin.H{
		"msssage": "addUser",
	})
}

func listUsers(context *gin.Context) {
	context.JSONP(http.StatusOK, gin.H{
		"msssage": "listUsers",
	})
}

启动项目后,用上面的几个url分别访问,就能等到对应的信息
在这里插入图片描述

后记
  个人总结,欢迎转载、评论、批评指正

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要安装gin和grpc的Go语言库。可以使用以下命令: ``` go get -u github.com/gin-gonic/gin go get -u google.golang.org/grpc ``` 接着,在代码中导入相应的库: ```go import ( "log" "github.com/gin-gonic/gin" "google.golang.org/grpc" ) ``` 然后,创建一个gin的路由实例,并在路由中使用grpc客户端调用相应的服务: ```go func main() { // 创建 gin 实例 r := gin.Default() // 连接到 grpc 服务 conn, err := grpc.Dial("localhost:50051", grpc.WithInsecure()) if err != nil { log.Fatalf("failed to connect: %v", err) } defer conn.Close() // 创建 grpc 客户端 client := pb.NewUserServiceClient(conn) // 定义 gin 路由 r.GET("/users/:id", func(c *gin.Context) { // 从 URL 参数中获取用户 ID id := c.Param("id") // 调用 grpc 服务获取用户信息 user, err := client.GetUser(context.Background(), &pb.GetUserRequest{Id: id}) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } // 返回用户信息 c.JSON(http.StatusOK, gin.H{"user": user}) }) // 启动 gin 服务 if err := r.Run(":8080"); err != nil { log.Fatalf("failed to start server: %v", err) } } ``` 以上代码中,我们创建了一个gin实例,并在路由中使用grpc客户端调用了一个名为`GetUser`的服务,该服务接收一个用户ID作为参数,并返回一个包含用户信息的结构体。我们将调用结果转换为JSON格式,并在HTTP响应中返回给客户端。 需要注意的是,以上代码中的`pb`是根据你的grpc服务定义文件自动生成的代码,你需要将其替换为你的实际代码中的包名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值