前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang框架 - gin实现Http Server

Golang框架 - gin实现Http Server

作者头像
AsiaYe
发布2022-12-07 09:07:56
2.1K0
发布2022-12-07 09:07:56
举报
文章被收录于专栏:DBA随笔

Golang框架 - gin实现Http Server

最近写golang的时候,有一个实现http server的需求,用golang的框架gin,这里简单总结下使用方法。

01

gin框架介绍

gin框架是利用go开发的一个实现web应用框架,它的开发是基于基础golang工具包net/http的,所以使用起来也比较简单。

对于用户来说,只需要进行3个步骤,就可以实现一个简单的web框架了。分别是引入包、定义http的路由、编写handler函数。

gin框架的下载

github地址:https://github.com/gin-gonic/gin

下载方法:go get -u github.com/gin-gonic/gin

快速上手的案例

代码语言:javascript
复制
package main

import (
    "net/http"

    "github.com/gin-gonic/gin"
)

func main() {
    // 启动gin框架,采用默认配置
    router := gin.Default()

    // 编写匿名的handler函数
    router.GET("/test", func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{
            "status":  "OK",
            "message": "hello,world",
        })
    })
    router.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

上述代码,采用了默认的gin框架,默认端口是8080,生成了简单的路由/test , 并实现了匿名的handler函数,返回一个json结果。

运行代码,此时我们访问本机的8080端口,就能得到如下输出:

这其实就是http server的一个最简单的形态。

02

自定义需求

在实际的应用程序中,端口往往不能采用默认,而且需要配置多个router来响应不同类型的请求,我们可以将代码改写为下面这样:

代码语言:javascript
复制
package main

import (
    "github.com/gin-gonic/gin"
)
// 生成4个空的handler函数
func getting(c *gin.Context)  {}
func posting(c *gin.Context)  {}
func putting(c *gin.Context)  {}
func deleting(c *gin.Context) {}

func main() {
    // 启动gin框架,采用默认配置
    router := gin.Default()

    // 不同的url
    router.GET("/someGet", getting)
    router.POST("/somePost", posting)
    router.PUT("/somePut", putting)
    router.DELETE("/someDelete", deleting)
    // 修改端口号为8888
    router.Run(":8888") // listen and serve on 0.0.0.0:8888 (for windows "localhost:8888")
}

上述代码中,router实现了4个路由get、post、put、delete,每个路由有单独的方法,这些方法可以根据实际的应用逻辑进行实现。例子中,还将运行端口改为8888,避免使用默认端口。

除此之外,还可以对我们的http的url进行分组管理,代码如下:

代码语言:javascript
复制
func main() {
  router := gin.Default()

  // Simple group: v1
  v1 := router.Group("/v1")
  {
    v1.POST("/login", loginEndpoint)
    v1.POST("/submit", submitEndpoint)
    v1.POST("/read", readEndpoint)
  }

  // Simple group: v2
  v2 := router.Group("/v2")
  {
    v2.POST("/login", loginEndpoint)
    v2.POST("/submit", submitEndpoint)
    v2.POST("/read", readEndpoint)
  }

  router.Run(":8080")
}

不难看出来,上述代码对http的路径进行了分组,根据不同的组进行请求路由。

在gin的框架的说明文档中,还有很多很好的功能,例如:

如何在url中实现变量?

如何让url中支持查询?

如何用url读取文件内容?

如何在url中写入访问日志。

本篇文章作为抛砖引玉,更详细的框架使用,请大家移步github。

https://github.com/gin-gonic/gin

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Golang框架 - gin实现Http Server
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档