【Ginフレームワーク2】Gin基本ルーティング(1)

22560 ワード

目次
  • 基本ルート
  • ルーティングパラメータ
  • パス全パラメータ
  • パス単一パラメータ
  • URLで指定されたパラメータ【GET、POST要求】
  • を取得する
  • URLのデフォルト値を取得するパラメータ【GET、POST要求】

  • 概要
    ルーティングはurlアドレスをカスタマイズして指定した関数を実行し、良好なルーティング定義はseoに良い効果を果たすことができます.
    1.基本ルート
    ginフレームワークはhttpライブラリをカプセル化し、GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONSこれらのhttpリクエスト方式を提供する. router.method()を使用してルーティングをバインド
     func (group *RouterGroup) METHOD(relativePath string, handlers ...HandlerFunc) IRoutes
    
    router := gin.Default()
    
    router.GET("/get", func(c *gin.Context) { c.JSON(200, gin.H{"message": "get  "}) })
    
    router.POST("/post", func(c *gin.Context) { c.JSON(200, gin.H{"message": "post  "}) })
    
    router.PUT("/put", func(c *gin.Context) { c.JSON(200, gin.H{"message": "put  "}) })
    
    router.DELETE("/delete", func(c *gin.Context) { c.JSON(200, gin.H{"message": "delete"}) })
    
    router.PATCH("/patch", func(c *gin.Context) { c.JSON(200, gin.H{"message": "patch"}) })
    
    router.HEAD("/head", func(c *gin.Context) { c.JSON(200, gin.H{"message": "head"}) })
    
    router.OPTIONS("/options", func(c *gin.Context) { c.JSON(200, gin.H{"message": "options"}) })
    
    router.Run(":9999")//      localhost:9999
    

    2.ルーティングパラメータ
  • URLパスのすべてのパラメータを取得
    /を分割子とし、各パラメータは「:」をパラメータとして動的変数を表し、ルーティングに対応するパラメータに自動的にバインドされます.ルーティングルール:[:]は一致しなくてもよいことを示します.
    例:http://localhost:8080/user/李四/20/北京/男将マッチング"http://localhost:8080/user/:name/:age/:address/:sex上のリンクでは、/user/:name/:age/:address/:sexを使用して、李四、20、北京、男性
    c.Params("key")
    
    //http://localhost:8080/user/  /20/  / 
    router.GET("/user/:name/:age/:address/:sex", func(c *gin.Context) {
        //  URL     
        //"[{name   } {age 20} {address   } {sex  }]
    "
    c.JSON(http.StatusOK, fmt.Sprintln(c.Params)) })
    注意:ただし、/user/または/userアクセスは一致しません.http://localhost:8080/user/李四/20/北京/男性結果:
    "[{name   } {age 20} {address   } {sex  }]
    "
  • URLパスの単一パラメータの取得
    gin.ContextオブジェクトのParam(key)メソッドを使用して、次のように宣言されたkeyの値を取得します.
    //http://localhost:8080/login/15949629528/123456
    router.GET("/login/:name/:password", func(c *gin.Context) {
      c.JSON(http.StatusOK, gin.H{
        //{ name: "15949629528", password: "123456" }
        "name":     c.Param("name"),
        "password": c.Param("password"),
      })
    })
    
    アクセス:http://localhost:8080/login/15949629528/123456 結果:
    { name: "15949629528", password: "123456" }
    
  • URLで指定したパラメータ【GET、POST要求】を取得する
    取得URLのパス値と取得パラメータが異なります
    例:http://localhost:8080/login?name=張三&password=123456は、以下の方法で要求パラメータname、passwordの値を取得することができる.
    //  URL key  
    func (c *Context) Query(key string) string
    
    //GET  
    router.GET("/login", func(c *gin.Context) {
      //{ name: "  ", password: "123456" }
      c.JSON(http.StatusOK, gin.H{
        "name":     c.Query("name"),
        "password": c.Query("password"),
      })
    })
    
    //POST  
    router.POST("/login", func(c *gin.Context) {
    	//{"name":"  ","password":"123456"}
    	c.JSON(http.StatusOK, gin.H{
    		"name":     c.Query("name"),
    		"password": c.Query("password"),
    	})
    })
    
    アクセス:http://localhost:8080/login?name=張三&password=123456出力内容は以下の通り:
    { name: "  ", password: "123456" }
    
  • 指定したデフォルト値のパラメータを取得する【デフォルト値付き受信】【GET、POST要求】
    ginフレームワークはもちろん、gin.Context.DefaultQuery()メソッドでは、受信したパラメータ名を指定できます.また、パラメータ値が受信されていない場合に設定されたデフォルト値は、次のように宣言されます.
    func (c *Context) DefaultQuery(key, defaultValue string) string
    
    要求がkeyを携帯していない場合にのみ、デフォルト値が有効になります.その他の場合、デフォルト値は有効ではありません.URLのキーの値が空であっても、デフォルト値は有効になりません.取得した値は空です.なお、これは取得URLのパラメータ値
    //GET  
    router.GET("/user", func(c *gin.Context) {
      //{ name: "  ", password: "123456" }
      c.JSON(http.StatusOK, gin.H{
        "name":     c.DefaultQuery("name", "    "),
        "password": c.DefaultQuery("password", "    "),
      })
    })
    
    //POST  
    router.POST("/user", func(c *gin.Context) {
    //{"name":"  ","password":"    "}
    	c.JSON(http.StatusOK, gin.H{
    	  "name":     c.DefaultQuery("name", "    "),
    	  "password": c.DefaultQuery("password", "    "),
    	})
    })
    
    
    アクセスです.http://localhost:8080/user?password= 出力内容は、
    { name: "    ", password: "    " }