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
gin 框架入门 1、简介1.1 gin 简介 Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance – up to 40 times faster. If you need smashing performance, get yourself s 2024-11-14 Go #Go
Go 安装之环境变量 GOPATH 一、GOPATHGOPATH 是 Go 语言中使用的一个环境变量,它使用绝对路径提供项目的工作目录(也称为工作区)。 工作目录是一个工程开发的相对参考目录,好比当你要在公司编写一套服务器代码,你的工位所包含的桌面、计算机及椅子就是你的工作区。 工作区的概念与工作目录的概念也是类似的。如果不使用工作目录的概念,在多人开发时,每个人有一套自己的目录结构,读取配置文件的位置不统一, 输出的二进制运行文件 2024-11-11 Go #Go
Go 安装(Mac) 首先,我们需要确定你的Mac电脑中是否已经安装了Go。打开终端,输入以下命令: 1go version 如果没有安装,该命令将返回“command not found”。接下来,你可以通过以下步骤进行安装: 下载Go语言: 访问 Go的官方网站: https://golang.google.cn/dl/ 。下载 go 安装包 go1.20.3.darwin-amd64.pkg 或 go1.2 2024-11-11 Go #Go
Go 安装(Windows) 前言Go(又称Golang)是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于2007年9月开始设计Go,稍后Ian Lance Taylor、Russ Cox加入项目。Go是基于Inferno操作系统所开发的。 Go于2009年11 2024-11-11 Go #Go
01-hello world 12345678910package mainimport "fmt"func main() { /* 简单的程序 万能的hello world */ fmt.Println("Hello world")} 代码解读 第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。packag 2024-11-01 Go #Go
02-变量 变量的声明声明变量的一般形式是使用 var 关键字 单个变量声明第一种,指定变量类型,声明后若不赋值,使用默认值0。 12345// 格式var v_name v_type// 示例var a int 第二种,根据值自行判定变量类型。 12345// 格式var v_name = value// 示例var a = 1 第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的, 2024-11-01 Go #Go