zoukankan      html  css  js  c++  java
  • go gin

     一、

    1.安装

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

    2.例子

    package main
    
    import "github.com/gin-gonic/gin"
    func main() {
        r := gin.Default()
        r.GET("/ping", func(c *gin.Context) {
            c.JSON(200, gin.H{
                "message": "pong",
            })
        })
        r.Run()
    }

    3.测试

    http://127.0.0.1:8080/ping

    4.结合 vue和Bootstrap

    main.go

    package main
    
    import (
        "net/http"
    
        "github.com/gin-gonic/gin"
    )
    
    func main() {
        r := gin.Default()
        r.LoadHTMLGlob("view/*")
        r.GET("/", func(c *gin.Context) {
            c.HTML(http.StatusOK, "index.html", gin.H{})
        })
        r.Run()
    }

    <!doctype html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" >
      </head>
      <body>
        <div id="vm"  class="container">
            <div class="d-flex justify-content-center p-5">
                <input v-model="message"/>
            </div>
            <div class="d-flex justify-content-center">
                <h1>${message}</h1>
            </div>
        </div>
    
        <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" ></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" ></script>
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" ></script>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>  
        <script>
            var vm = new Vue({
                // 由于双花括号和go模板冲突,把vue双花改成${message}形式
                delimiters: ['${', '}'],
                el: '#vm',
                data: {
                    message: null
                }
            })
        </script>
    </body>
    </html>

     

    二、

     1.请求方式及请求路径

    func main() {
        //使用默认中间件创建一个gin路由器
        r := gin.Default()
        //get请求方式:参数1地址,参数2函数
        r.GET("/", getting)
        //启动默认端口8080
        r.Run()
    }
    
    func getting(c *gin.Context) {
        //
        c.JSON(200, "Hello")
    }

    2.参数

    (1)路径传参

    127.0.0.1:8080/tom

    func main() {
        r := gin.Default()
        //get请求方式:参数1地址,参数2函数
        r.GET("/:name", getting)
        r.Run()
    }
    
    func getting(c *gin.Context) {
        //
        name := c.Param("name")
        c.String(200, "Hello %s", name)
    }

     (2)get

    func main() {
        r := gin.Default()
        r.GET("/", getting)
        r.Run()
    }
    
    func getting(c *gin.Context) {
        //设置默认值,如果客户端为传递str1,则默认赋值为def
        str1 := c.DefaultQuery("str1", "def")
        str2 := c.Query("str2") // 是 c.Request.URL.Query().Get("str2") 的简写
        c.String(200, "Hello %s
    ", str1)
        c.String(200, "Hello %s", str2)
    }

     (3)表单

    func main() {
        r := gin.Default()
        r.POST("/", posting)
        r.Run()
    }
    
    func posting(c *gin.Context) {
    
        name := c.PostForm("name")
        c.String(200, "Hello %s 
    ", name)
    
        age := c.DefaultPostForm("age", "18") // 此方法可以设置默认值
        c.String(200, "Hello %s", age)
    }

  • 相关阅读:
    海量数据中,寻找最小的k个数。
    快速排序
    反转一个单链表,分别以迭代和递归的形式来实现
    N个大小不等的自然数排序,时间复杂度为O(n),空间复杂度为O(1)
    堆排序
    两个已经排好序的链表合并为一个有序链表
    字符串过滤空格、回车、tab
    求一个浮点数的连续子序列最大乘积 (2013 小米校园招聘笔试题)
    单向循环链表队列,从头开始报数,当报到m或者m的倍数的元素出列
    给一个数组,元素都是整数(有正数也有负数),寻找连续的元素相加之和为最大的序列。
  • 原文地址:https://www.cnblogs.com/buchizaodian/p/11025584.html
Copyright © 2011-2022 走看看