08-更新日志 1. 更新日志1.1. v1.01.1.1. 破坏性变更 gorm.Open返回类型为*gorm.DB而不是gorm.DB 更新只会更新更改的字段 大多数应用程序不会受到影响,只有当您更改回调中的更新值(如BeforeSave,BeforeUpdate)时,应该使用scope.SetColumn,例如: 123456func (user *User) BeforeUpdate(scope *go 2024-11-15 Go #Go
01-viper 1.介绍Viper是适用于Go应用程序(包括Twelve-Factor App)的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。目前Star 15.8k,它支持以下特性: 设置默认值 从JSON、TOML、YAML、HCL、envfile和Java properties格式的配置文件读取配置信息 实时监控和重新读取配置文件(可选) 从环境变量中读取 从远程 2024-11-14 Go #Go
01-快速入门 1.什么是Gin Gin 是一个用Go (Golang)编写的 开源web 框架。 目前在GitHub Start 47.4K, 它是一个类似于 martini 但拥有更好性能的 API 框架,路由解析由于使用的是httprouter,速度提高了近 40 倍。 Github: https://github.com/gin-gonic/gin 中文文档: https://gin-gonic.com 2024-11-14 Go #Go
02-zap 1.项目介绍Gin框架学习使用,并实践常用包在Gin框架中的集成和使用。源码地址: https://github.com/52lu/gin-import-template.git 1.1 项目结构123456789101112├── api # 接口├── config # 配置├── core # 核心代码├── global # 全局变量和常量├── initialize # 初始化相关├── 2024-11-14 Go #Go
02-启动流程分析 1.启动服务1.1 服务源码123456789101112131415package main// 引入gin框架import "github.com/gin-gonic/gin"func main() { // 创建一个默认的路由引擎 engine := gin.Default() // 注册Get路由 engine.GET("/", func(ctx *gin.Context) 2024-11-14 Go #Go
03-gorm 1. 介绍gorm是一个使用Go语言编写的ORM框架。 它文档齐全,对开发者友好,支持主流数据库。具体使用可参考之前的文章Go常用包(十九):全功能ORM框架(gorm) 1.1 集成流程 1.2 涉及目录 2. 配置2.1 编辑主配置./config.yaml1234567891011121314151617181920212223mysql: host: 127.0.0.1 port: 3 2024-11-14 Go #Go
03-路由初使用 1.介绍Gin框架的路由功能是基于httprouter(https://github.com/julienschmidt/httprouter)设计的,httprouter是一由golang实现的路由组件。httprouter使用基数树(也叫基数特里树或压缩前缀树)这种数据结构来维护映射路由关系,通过前缀树快速路由。同时其里面的HttpRouter结构体实现了golang的net.http.ser 2024-11-14 Go #Go
04-jwt 1. 介绍JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,目前多用于前后端分离项目和OAuth2.0业务场景下。 jwt-go 是使用Go语言实现的Json web token (JWT),目前GitHub Start 9.8k,源码地址: https://github.com/dgrijalva/jwt-go,从版本3.2.1开 2024-11-14 Go #Go
04-路由组 1、什么是路由组?从字面意思理解,路由组指的就是一组路由。那么什么样的路由可以归类到一组呢?在实际使用中,比较常见的场景的是根据版本分组。比如下图 2、使用语法在 Gin 框架中提供了一个函数 Group 可以将路由进行分组管理。使用语法如下: a.不嵌套分组: 123456789v1 := engine.Group("v1"){ v1.GET("/path/xxx", func(c 2024-11-14 Go #Go
05-redis 1.介绍redis官网推荐使用redigo(https://github.com/gomodule/redigo),截止到今天Github Start是8.2k 但go-redis(https://github.com/go-redis/redis)使用的人更多, 并且go-redis封装得更好。截止到今天Github Start 是12.1k。 1.1 集成流程 2.安装1go get gith 2024-11-14 Go #Go
05-参数接收 1、路由参数1.1、接收路由参数 Param当注册路由格式为: /path/:a/:b 时,:x 指的就是路由参数,可以直接通过 context.Param("x") 获取值信息。 语法: 1func (c *Context) Param(key string) string 简单示例 123456r := gin.Default() r.GET("/user/:id", f 2024-11-14 Go #Go
06-参数绑定 1、介绍在 Gin 框架中参数不但能通过指定 key 接收,也可以直接绑定到结构体中 1.1、绑定方法概览Gin 提供了 Must bind 和 Should bind 两种类型的绑定方法,这两种类型对应的方法如下: 功能 Must bind方法 Should bind方法 Bind ShouldBind 绑定JSON BindJSON ShouldBindJSON 绑定XM 2024-11-14 Go #Go
07-文件上传 1.介绍在Gin框架中已经支持文件上传,包括单文件上传和多文件上传。 2. 单文件上传在Gin框架中可以通过FormFile("param")来接收上传的单个文件信息,具体使用参考下面代码: 2.1 代码示例12345678910111213141516171819202122232425262728293031323334353637383940//--- main.go - 2024-11-14 Go #Go
08-中间件 中间件(英语:Middleware),又译中间件、中介层,是一类提供系统软件和应用软件之间连接、便于软件各部件之间的沟通的软件,应用软件可以借助中间件在不同的技术架构之间共享信息与资源。 1.介绍在Gin框架中,中间件本质上是gin.HandlerFunc 函数,如果我们要自定义中间件,只需要返回类型是gin.HandlerFunc 即可。 在Gin框架中,使用中间件可分为以下几种场景: 全 2024-11-14 Go #Go
09-BasicAuth中间件使用 1.什么是BasicAuth?Basic Auth是一种开放平台认证方式,简单的说就是需要你输入用户名和密码才能继续访问。 2.在单路由中使用 如果需要针对单个路由使用,在要在单路由中注册BasicAuth中间件即可。 2.1 代码1234567891011121314151617// 使用BasicAuth中间件func main(){ engine := gin.Default() 2024-11-14 Go #Go
10-日志使用(logrus+lumberjack) 1.框架自带gin框架自带日志记录功能,通过fmt.Fprint和fmt.Fprintf来记录日志信息,默认是将日志写到终端,可以通过gin.DefaultWriter来设置写入文件。 1.1 终端禁用颜色1gin.DisableConsoleColor() 1.2 只写入文件1234567891011121314151617181920// 日志记录使用func main() { 2024-11-14 Go #Go
11-验证器(validator) Github: https://github.com/go-playground/validator 1、介绍validatorh 是一个开源的验证器包,可以快速校验输入信息是否符合自定规则。 1.1、安装1go get github.com/go-playground/validator 1.2、引用1import "github.com/go-playground/validator 2024-11-14 Go #Go
12-更多HTTP服务使用 1.静态文件服务1.1 代码1234567891011package mainimport "github.com/gin-gonic/gin"func main() { engine := gin.Default() // 静态图片 engine.Static("/img","./public/img") // 静态文件 engine.StaticFile("/favicon.ico" 2024-11-14 Go #Go
Gin 配置 官网配置:https://gorm.io/zh_CN/docs/gorm_config.html 12345678910111213db, err := gorm.Open( sqlite.Open("gorm.db"), &gorm.Config{ NamingStrategy: schema.NamingStrategy{ 2024-11-14 Go #Go
gin swagger 1、Swagger介绍Swagger是基于标准的 OpenAPI 规范进行设计的,本质是一种用于描述使用json表示的Restful Api的接口描述语言,只要照着这套规范去编写你的注解或通过扫描代码去生成注解,就能生成统一标准的接口文档和一系列 Swagger 工具。Swagger包括自动文档,代码生成和测试用例生成。 2、安装Swagger2.1、安装 1.70 之前:go get -u gi 2024-11-14 Go #Go