您现在的位置是:群英 > 开发技术 > 编程语言
Gin框架搭建简易服务的详细操作步骤是什么
Admin发表于 2022-07-20 17:52:47895 次浏览
关于“Gin框架搭建简易服务的详细操作步骤是什么”的知识点有一些人不是很理解,对此小编给大家总结了相关内容,文中的内容简单清晰,易于学习与理解,具有一定的参考学习价值,希望能对大家有所帮助,接下来就跟随小编一起学习一下“Gin框架搭建简易服务的详细操作步骤是什么”吧。

go语言web框架挺多的,各有各的特点和风格。我之所以在项目中使用gin框架,是因为项目一开始是用的martini,一个设计得很好的框架,但是存在一个比较严重的问题,就是大量使用反射使用太多导致效率过低(这个问题也导致了程序在访问量暴涨时内存上涨过快的问题),而且这个框架在去年就没有人维护了,而作者推荐使用风格很相近的gin框架,大概看了一下,风格确实差不多,而且效率很高,于是就用了gin。至于其它的框架,了解得比较多的是beego,项目中也使用了它的子项目beelog,但是由于我做的项目是偏向于应用服务,而不是网站服务,它的风格更适合网站服务,因此就没有选择它。

贴一下这两个框架的github仓库,martini就不推荐了

gin
beego

下面贴一下用gin搭建一个简易的应用服务的代码片段,非常的简单,看一下代码注释也很容易理解。

package main

import (
    "fmt"
    "github.com/gin-gonic/gin"
    "net/http"
)

func main() {

    gin.SetMode(gin.DebugMode) //全局设置环境,此为开发环境,线上环境为gin.ReleaseMode
    router := gin.Default()    //获得路由实例

    //添加中间件
    router.Use(Middleware)
    //注册接口
    router.GET("/simple/server/get", GetHandler)
    router.POST("/simple/server/post", PostHandler)
    router.PUT("/simple/server/put", PutHandler)
    router.DELETE("/simple/server/delete", DeleteHandler)
    //监听端口
    http.ListenAndServe(":8005", router)
}

func Middleware(c *gin.Context) {
    fmt.Println("this is a middleware!")
}

func GetHandler(c *gin.Context) {
    value, exist := c.GetQuery("key")
    if !exist {
        value = "the key is not exist!"
    }
    c.Data(http.StatusOK, "text/plain", []byte(fmt.Sprintf("get success! %s\n", value)))
    return
}
func PostHandler(c *gin.Context) {
    type JsonHolder struct {
        Id   int    `json:"id"`
        Name string `json:"name"`
    }
    holder := JsonHolder{Id: 1, Name: "my name"}
    //若返回json数据,可以直接使用gin封装好的JSON方法
    c.JSON(http.StatusOK, holder)
    return
}
func PutHandler(c *gin.Context) {
    c.Data(http.StatusOK, "text/plain", []byte("put success!\n"))
    return
}
func DeleteHandler(c *gin.Context) {
    c.Data(http.StatusOK, "text/plain", []byte("delete success!\n"))
    return
}

用curl命令访问这些接口可以得到对应的返回结果

程序的日志输出

这里只是快速上手的一些方法,作为一个web服务框架,功能当然非常强大,这就需要在实际使用中慢慢挖掘和深究了。


以上就是关于Gin框架搭建简易服务的详细操作步骤是什么的介绍啦,需要的朋友可以参考上述内容,希望对大家有帮助,欢迎关注群英网络,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

相关信息推荐
2022-06-01 17:37:38 
摘要:php数组不是基本类型,而是复合数据类型。基本类型(标量数据类型)只能存储一个数据,而数组中可以存储任意多个数据。复合数据类型允许将多个类型相同的数据聚合在一起,表示为一个实体项;复合数据类型包括数组(Array)和对象(Object)。
2022-05-18 16:09:35 
摘要:​本篇文章给大家带来的内容是关于HTML5网页水印SDK的实现代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
2022-09-01 17:26:15 
摘要:“node.js”中有定时器;“node.js”中的定时器模块包含了一定时间执行一遍代码的函数,定时器不必通过require()的方式引入,因为所有的方法都是模拟浏览器中JavaScript函数,是全局的;“node.js”中的定时器函数实现了与web浏览器提供的定时器API类似的API。
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部