gin初识

Gin 是一个用 Go (Golang) 编写的 web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 httprouter,速度提高了近 40 倍。 如果你是性能和高效的追求者, 你会爱上 Gin.

特性

快速

基于 Radix 树的路由,小内存占用。没有反射。可预测的 API 性能。

支持中间件

传入的 HTTP 请求可以由一系列中间件和最终操作来处理。 例如:Logger,Authorization,GZIP,最终操作 DB。

Crash 处理

Gin 可以 catch 一个发生在 HTTP 请求中的 panic 并 recover 它。这样,你的服务器将始终可用。例如,你可以向 Sentry 报告这个 panic!

JSON 验证

Gin 可以解析并验证请求的 JSON,例如检查所需值的存在。

路由组

更好地组织路由。是否需要授权,不同的 API 版本…… 此外,这些组可以无限制地嵌套而不会降低性能。

错误管理

Gin 提供了一种方便的方法来收集 HTTP 请求期间发生的所有错误。最终,中间件可以将它们写入日志文件,数据库并通过网络发送。

内置渲染

Gin 为 JSON,XML 和 HTML 渲染提供了易于使用的 API。

可扩展性

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package main
 
import (
    "github.com/gin-gonic/gin"
    "log"
    "net/http"
)
 
func jsonHandler(context *gin.Context) {
    context.JSON(http.StatusOK, gin.H{
        "name": "张三",
        "age": 28,
        "gender": true,
        "account": 18888.88,
        "hobby": []string{"乒乓", "CF", "LOL"},
    })
}
 
func main() {
    r := gin.Default()  // 生成默认的路由器
    // 注册一个路由,使用GET方法,里面有一个路径字符串和一个函数
    r.GET("/hello", func(context *gin.Context) {
        context.String(http.StatusOK, "hello world.")
    })
    r.GET("/json", jsonHandler)
 
    // r.Run()第1种方式启动,其底层还是依赖了net/http, r.Run()只是多做了一些输出而已
    if err := r.Run("127.0.0.1:6060"); err != nil {
        log.Fatal(err)
    }
 
    // 第2种启动方式net/http启动
    //if err := http.ListenAndServe("127.0.0.1:6060", r); err != nil {
    //  log.Fatal(err)
    //}
 
    // 第3种方式启动(我们自定义服务器的配置)
    //s := http.Server{
    //  Addr: "127.0.0.1:7070",
    //  Handler: r,
    //  ReadTimeout: 10 * time.Second,
    //  WriteTimeout: 10 * time.Second,
    //  MaxHeaderBytes: 1 << 20,
    //}
    //if err := s.ListenAndServe(); err != nil {
    //  log.Fatal(err)
    //}
 
}

  

posted @   专职  阅读(184)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示