zoukankan      html  css  js  c++  java
  • Golang go-gin 注册路由

    代码实现

    main.go

    package main
    
    import (
        "fmt"
        "github.com/jihite/go-gin-example/pkg/setting"
        "github.com/jihite/go-gin-example/routers"
        "net/http"
    )
    
    func main() {
        router := routers.InitRouter()
    
        s := &http.Server{
            Addr:           fmt.Sprintf(":%d", setting.HTTPPort),
            Handler:        router,
            ReadTimeout:    setting.ReadTimeout,
            WriteTimeout:   setting.WriteTimeout,
            MaxHeaderBytes: 1 << 20,
        }
        s.ListenAndServe()
    }

    http:Server:

    • Addr:监听的TCP地址,格式为:8000
    • Handler:http句柄,实质为ServeHTTP,用于处理程序响应HTTP请求
    • ReadTimeout:允许读取的最大时间
    • WriteTimeout:允许写入的最大时间
    • MaxHeaderBytes:请求头的最大字节数

    实现InitRouter()

    func InitRouter() *gin.Engine {
        r := gin.New()
        r.Use(gin.Logger())
        r.Use(gin.Recovery())
        gin.SetMode(setting.RunMode)
        r.GET("/ping", func(c *gin.Context) {
            c.JSON(200, gin.H{
                "message": "pong",
            })
        })
    
        apig := r.Group("/api")
        {
            apig.GET("/tags", api.GetTags)
            apig.POST("/tags", api.AddTag)
            apig.PUT("/tags/:id", api.EditTag)
            apig.DELETE("/tags/:id", api.DeleteTag)
            apig.POST("/tags/export", api.ExportTag)
            apig.POST("/tags/import", api.ImportTag)
    
        }
        return r
    }

    /ping 对应的是匿名函数

    /tags对应的是具体的函数

    func GetTags(c *gin.Context) {
    
    }
    
    func AddTag(c *gin.Context) {
    
    }

    其中

    gin.ContextContextgin中的上下文,它允许我们在中间件之间传递变量、管理流、验证JSON请求、响应JSON请求等,在gin中包含大量Context的方法,如我们常用的DefaultQueryQueryDefaultPostFormPostForm

    RESTFUL中的方法:GET、POST、PUT、DELETE、OPTIONS

    方法 安全 幂等 作用
    GET ✔️ ✔️ 获取资源
    POST × × 创建子资源
    PUT ✔️ ✔️ 创建、更新资源
    DELETE × ✔️ 删除资源
    OPTIONS ✔️ ✔️ 验证服务是否正产

    幂等:使用相同参数重复执行,并能获得相同结果的函数

    POST、PUT区别

    POST新建子资源;而PUT, 如果资源不存在则创建,否则更新

  • 相关阅读:
    两个简单的画验证码图形程序
    Cisco路由技术基础知识详解
    网络管理中的常用命令
    网络管理中的常用命令
    基于SNMP的MIB库访问实现
    SNMP编程基础
    SNMP编程基础
    Cisco路由技术基础知识详解
    两个简单的画验证码图形程序
    模版方法
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/12263068.html
Copyright © 2011-2022 走看看