🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 简单例子 > 提示:实际项目开发中不要把路由定义和控制器函数都写在一个go文件,不方便维护,可以参考第一章的项目结构,规划自己的业务模块 ~~~ package main import "github.com/gin-gonic/gin" func main() { // 初始化一个http服务对象 r := gin.Default() // 路由定义 [GET请求], url路径为:/user/sayHello, 绑定sayHello控制器函数 r.GET("/user/sayHello", sayHello) // 路由定义 [GET请求,绑定参数方式], url路径为:/user/sayHello2, 绑定sayHello2控制器函数 r.GET("/user/sayHello2/:username", sayHello2) // 路由定义 [POST请求], url路径为:/user/login, 绑定doLogin控制器函数 r.POST("/user/login", doLogin) r.Run() // 监听并在 0.0.0.0:8080 上启动服务 } // 控制器函数 func sayHello(c *gin.Context) { // 获取post请求参数 username := c.Query("username") // 通过请求上下文对象Context, 直接往客户端返回一个字符串 c.String(200, "hello %s", username) } // 控制器函数 func sayHello2(c *gin.Context) { // 获取绑定参数 username := c.Param("username") // 通过请求上下文对象Context, 直接往客户端返回一个字符串 c.String(200, "hello %s", username) } // 控制器函数 func doLogin(c *gin.Context) { // 获取post请求参数 username := c.PostForm("username") password := c.PostForm("password") c.JSON(200, gin.H{ "username":username, "password":password, }) } ~~~ ## 分组路由 > 在做api开发的时候,如果要支持多个api版本,我们可以通过分组路由来实现api版本处理 ~~~ func main() { router := gin.Default() // 创建v1组 v1 := router.Group("/v1") { // 在v1这个分组下,注册路由 v1.POST("/login", loginEndpoint) v1.POST("/submit", submitEndpoint) } // 创建v2组 v2 := router.Group("/v2") { // 在v2这个分组下,注册路由 v2.POST("/login", loginEndpoint) v2.POST("/submit", submitEndpoint) } router.Run(":8080") } ~~~ > 上面例子将会注册以下路径 > /v1/login > /v1/submit > /v2/login > /v2/submit