时间: 2020-09-3|tag:24次围观|0 条评论


代码实现

main.go

package mainimport (    "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, 如果资源不存在则创建,否则更新

文章转载于:https://www.cnblogs.com/kaituorensheng/p/12263068.html

原著是一个有趣的人,若有侵权,请通知删除

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《Golang go-gin 注册路由
   

还没有人抢沙发呢~