zoukankan      html  css  js  c++  java
  • golang GIN

    GIN是golang的一个web 框架,它拥有很高的性能。

    安装

    $ go get -u github.com/gin-gonic/gin

     代码中引入

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

     快速使用

     1 package main
     2 
     3 import "github.com/gin-gonic/gin"
     4 
     5 func main() {
     6     r := gin.Default()
     7     r.GET("/ping", func(c *gin.Context) {
     8         c.JSON(200, gin.H{
     9             "message": "pong",
    10         })
    11     })
    12     r.Run() // listen and serve on 0.0.0.0:8080
    13 }

    运行: go run main.go

    使用API

    func main() {
    
        // Creates a gin router with default middleware:
        // logger and recovery (crash-free) middleware
        router := gin.Default()
    
        router.GET("/someGet", nil)
        router.POST("/somePost", nil)
        router.PUT("/somePut", nil)
        router.DELETE("/someDelete", nil)
        router.PATCH("/somePatch", nil)
        router.HEAD("/someHead", nil)
        router.OPTIONS("/someOptions", nil)
    
        router.Run()
    }

    可以很容易的提供GET,POST,PUT,DELETE等API

    GET的query paramter

    func main() {
        router := gin.Default()
    
        // Query string parameters are parsed using the existing underlying request object.
        // The request responds to a url matching:  /welcome?firstname=Jane&lastname=Doe
        router.GET("/welcome", func(c *gin.Context) {
            firstname := c.DefaultQuery("firstname", "Guest")
            lastname := c.Query("lastname") // shortcut for c.Request.URL.Query().Get("lastname")
    
            c.String(http.StatusOK, "Hello %s %s", firstname, lastname)
        })
        router.Run(":8080")
    }
    
    
    DefaultQuery 和 Query可以用来获取query paramter
    DefaultQuery,如果没有这个参数,则返回一个默认值,
    Query 如果没有这个值,则返回""

    POST的post form
    func main() {
        router := gin.Default()
    
        router.POST("/form_post", func(c *gin.Context) {
            message := c.PostForm("message")
            nick := c.DefaultPostForm("nick", "anonymous")
    
            c.JSON(200, gin.H{
                "status":  "posted",
                "message": message,
                "nick":    nick,
            })
        })
        router.Run(":8080")
    }

    使用postman 发起psot 请求

    POST /form_post HTTP/1.1
    Host: localhost:8080
    token: mtoken
    Content-Type: application/x-www-form-urlencoded
    cache-control: no-cache
    Postman-Token: e53e47cb-5a79-4907-9d77-82942236b203
    message=hellonick=lisiundefined=undefined

    结果

    {
        "message": "hello",
        "nick": "lisi",
        "status": "posted"
    }

    使用Map作为get或者get的参数

    使用postman发起请求

    POST /post?ids[a]=12& ids[b]=34 HTTP/1.1
    Host: localhost:8080
    token: mtoken
    Content-Type: application/x-www-form-urlencoded
    cache-control: no-cache
    Postman-Token: cbda56d4-2d9c-41d1-8f98-b43c00dd75a0
    names%5Ba%5D=firstnames%5Bb%5D=lastundefined=undefined

    最后打印结果

    ids: map[a:12 b:34]; names: map[a:first b:last]

    分组路由

  • 相关阅读:
    int k=0;k=k++;结果等于0,为什么?
    CentOS在无法连接外网的服务器上安装软件(以docker为例)
    docker搭建 elasticsearch 集群
    docker容器之间进行网络通信
    Kafka集群搭建
    Zookeeper集群搭建及常用命令
    SpringBoot将Swagger2文档导出为markdown或html
    Linux(CentOS7)虚拟机修改 NAT模式固定IP
    Linux Maven私服(Nexus)搭建
    Linux配置开机自启动
  • 原文地址:https://www.cnblogs.com/13579net/p/10375816.html
Copyright © 2011-2022 走看看