[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
- 基础知识
- 开发环境
- 包名规则
- 包初始化 (init)
- 基础数据类型
- 基础类型转换
- 格式化输出
- go指针
- 流程控制语句
- 函数定义
- 匿名函数
- 数组和切片
- map集合
- 结构体
- Interface接口
- 日期处理
- 数学计算
- 正则表达式
- 协程 (并发处理)
- channel
- waitgroup
- mutex (锁机制)
- websocket
- protobuf
- Redis
- 错误处理
- 打包程序
- NSQ消息队列
- 单元测试
- beego
- 安装入门
- Gin
- 快速入门
- 路由与控制器
- 处理请求参数
- 表单验证
- 处理响应结果
- 渲染HTML模版
- 访问静态文件
- Gin中间件
- Cookie处理
- Session处理
- Gin上传文件
- swagger
- pprof性能测试
- GORM
- 入门教程
- 模型定义
- 数据库连接
- 插入数据
- 查询数据
- 更新数据
- 删除数据
- 事务处理
- 关联查询
- 属于 (BELONG TO)
- 一对一 (Has One)
- 一对多 (Has Many)
- 多对多 (Many to Many)
- 预加载 (Preloading)
- 错误处理
- 第三方常用插件
- viper 读取配置文件
- zap 高性能日志
- Nginx代理配置
- Goland 快捷键