• Golang Gin(上)


    net/http

    Golang(Go语言)内置是有HTTP服务的,我们可以通过内置的net/http包来实现一个HTTP服务。

    func main() {
        http.HandleFunc("/",Index)
    
        log.Fatal(http.ListenAndServe(":8080", nil))
    }
    
    func Index(w http.ResponseWriter, r *http.Request){
        fmt.Fprint(w,"Hello World")
    }

    这就是一个很简单的HTTP服务实现,我们运行这个代码程序,然后在浏览器里打开http://localhost:8080网址,

    Hello World

    从代码上看实现一个HTTP服务是非常简单的,这也是Golang语言的优势,在底层做了很多封装,可以让我们更容易的实现相关的服务。

    虽然net/http看着很便捷、很简单,但是它也存在很多不足:

    1. 不能单独的对请求方法(POST,GET等)注册特定的处理函数

    2. 不支持Path变量参数

    3. 不能很很好的获取参数

    4. 不支持参数校验

    5. 不支持参数绑定

    6. 不能更好的多种格式输出

    7. 性能一般

    8. 扩展性不足

    9. ……

    以上等等,这些又都是我们Web开发中常用的,所以我们只能我们自己开发中自己重复的实现,影响了效率,降低了质量,不同人的开发者,性能也不一样。

    这时候,我们就非常需要一个Golang Web 框架来帮我们把这些重复的事情做了,这个就是Golang Gin要做的事情了。Golang Gin 作为一个非常优秀的Web框架,帮我们弥补了net/http的不足,同时还增加了很多日常Web开发使用的功能,可以让我们更好的进行Web开发。

    Hello Gin

    要使用Gin非常简单,它和其他第三方 Golang 库一样。如果你是基于GOPATH开发的,你需要先使用go get -u github.com/gin-gonic/gin 下载gin,然后import导入即可。

    如果你是用Go Module这种方式,使用import直接导入使用,然后你在go run运行的时候,会自动的下载gin包编译使用。当然你也可以通过go mod tidy来下载依赖的模块。

    当你采用github下载压缩包,放置在本地时,可能遇到   cannot find module providing package github.com/gin-gonic/gin: 安装gin后找不到gin包

    执行下边两条命令:

    go mod init gin
     
    go mod edit -require github.com/gin-gonic/gin@latest

    现在让我们通过一个例子,看下Golang Gin的使用是多么简单吧。

    package main
    
    import "github.com/gin-gonic/gin"
    
    func main() {
        r := gin.Default()
        r.GET("/", func(c *gin.Context) {
            c.JSON(200, gin.H{
                "Taobao":"alibaba",
                "Wechat":"tencent",
            })
        })
        r.Run(":8080")
    }

    然后我们运行它,打开浏览器,输入http://localhost:8080/就可以看到如下内容:

    {

    "Taobao":"alibaba",
    "Wechat":"tencent"

    }

    看我们输出一个JSON格式的内容是多么简单,这不就是我们项目中经常用到的API 返回的格式吗?不需要特别的包装,即可很方便的实现,比内置的net/http要好多了。
  • 相关阅读:
    thinkphp5ajax分頁&&搜索後分頁
    yii框架多文件上傳
    Redis:Linux安装与使用
    JSP使用Struts2标签库报错
    Dubbo:3
    Dubbo:1
    Dubbo:2
    zookeeper:master选举
    zookeeper:分布式锁简单实现(JavaApi)
    zookeeper:Curator操作节点
  • 原文地址:https://www.cnblogs.com/peteremperor/p/13881459.html
Copyright © 2020-2023  润新知