Mrcdh技术博客 Mrcdh技术博客
首页
  • Html5
  • Javascript
  • Nodejs
  • electron
  • Android
  • 微信公众号
  • 框架
  • 其他
  • Mysql
  • PHP
  • Python
  • java
  • Gulp
  • 其它
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Mrcdh

全栈开发小学生
首页
  • Html5
  • Javascript
  • Nodejs
  • electron
  • Android
  • 微信公众号
  • 框架
  • 其他
  • Mysql
  • PHP
  • Python
  • java
  • Gulp
  • 其它
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Mysql

  • PHP

  • Python

  • java

  • Go

    • gin的基本使用
      • 配置文件
      • 请求处理
      • 中间件
        • 跨域处理
      • 集成redis
    • gorm的基本使用
    • Go常见问题
  • 数据库

  • C#

  • ElasticSearch

  • Git

  • Gulp

  • Microsoft

  • Linux

  • 其它

  • 技术
  • Go
mrcdh
2024-03-27
目录

gin的基本使用

安装

go get -u github.com/gin-gonic/gin
1

# 配置文件

安装

go get -u github.com/go-ini/ini
1

编写配置文件app.ini

#debug or release
RUN_MODE = debug
[app]
PAGE_SIZE = 10
JWT_SECRET = 23347$040412
[server]
HTTP_PORT = 8000
READ_TIMEOUT = 60
WRITE_TIMEOUT = 60
[database]
TYPE = mysql
USER = 数据库账号
PASSWORD = 数据库密码
#127.0.0.1:3306
HOST = 数据库IP:数据库端口号
NAME = blog
TABLE_PREFIX = blog_
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

基本使用

package setting
import (
    "github.com/go-ini/ini"
)

var Cfg *ini.File

func init(){
    // 加载配置文件
    Cfg, err = ini.Load("conf/app.ini")
    if err != nil {
        log.Fatalf("Fail to parse 'conf/app.ini': %v", err)
    }
    var RunMode = Cfg.Section("").Key("RUN_MODE").MustString("debug")

    // 获取server段
    sec, err := Cfg.GetSection("server")
    if err != nil {
        log.Fatalf("Fail to get section 'server': %v", err)
    }
    HTTPPort := sec.Key("HTTP_PORT").MustInt(8000)
    ReadTimeout := time.Duration(sec.Key("READ_TIMEOUT").MustInt(60)) * time.Second
    WriteTimeout :=  time.Duration(sec.Key("WRITE_TIMEOUT").MustInt(60)) * time.Second
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 请求处理

c *gin.Context

// 获取json请求参数
type LoginForm struct {
    Username string `json:"username"`
    Password string `json:"password"`
}
var params LoginForm
if err := c.ShouldBindJSON(&params); err != nil {
    e.Error(c, err.Error())
    return
}
// params.Username

// 获取get参数, url?username=mrcdh
c.Query("username")

// 获取post参数, form-data
c.PostForm("username")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 中间件

# 跨域处理

func Cors() gin.HandlerFunc {
    return func(c *gin.Context) {
        c.Header("Access-Control-Allow-Origin", "*") // 允许任何源进行访问,如果是特定源,请替换为实际域名
        c.Header("Access-Control-Allow-Methods", "GET,HEAD,POST,PUT,DELETE,OPTIONS")
        //c.Header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With, X-Access-Token")
        c.Header("Access-Control-Allow-Headers", "*")
        c.Header("Access-Control-Allow-Credentials", "true") // 如果需要携带cookie则设置为true
        c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type")

        // 针对预检请求(OPTIONS方法),直接返回200 OK
        if c.Request.Method == "OPTIONS" {
            c.AbortWithStatus(http.StatusNoContent)
        }
        c.Next()
    }
}

r.Use(Cors())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 集成redis

#golang
上次更新: 2024/04/10, 16:21:11
IDEA基本使用
gorm的基本使用

← IDEA基本使用 gorm的基本使用→

最近更新
01
uniapp常见问题
03-19
02
Vue3项目搭建
12-25
03
使用pnpm的monorepo组织项目
11-01
更多文章>
Theme by Vdoing | Copyright © 2020-2025 Mrcdh | 苏ICP备2020058908号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×