1. ホーム
  2. スクリプト・コラム
  3. ゴラン

golang マイクロサービスフレームワーク 基本的なGin 基本的なルーティング 使い方 詳細

2022-01-06 22:35:26

概要

ルーティングは、特定の機能を実行するカスタムURLアドレスで、優れたルーティング定義はseoに非常に効果的です。

1. 基本的なルーティング

ginフレームワークはhttpライブラリをラップし、httpのリクエストメソッドとしてGET、POST、PUT、DELETE、PATCH、HEAD、OPTIONSを提供します。

を使用すると 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 method"}) })
router.POST("/post", func(c * gin.Context) { c.JSON(200, gin.H{"message": "post method"}) })
router.PUT("/put", func(c * gin.Context) { c.JSON(200, gin.H{"message": "put method"}) })
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")//specify port localhost:9999


2. ルーティングパラメータ

URLパスの全パラメータを取得する

スプリッターとして / を使用すると、各パラメーターは ":" パラメーターで表され、ルートの対応するパラメーターに自動的にバインドされる動的変数に対応します。
ルーティングルール:[:] は、マッチングせずに使用できることを意味します。

例えば

http://localhost:8080/user/李四/20/北京/男、"http://localhost:8080/user/:name/:age/:address/:sex" にマッチします。

この上記のリンク先において

<ブロッククオート

ユーザー/:名前/:年齢/:住所/:性別を使用して、それぞれLi4、20、北京、男性に一致させます。

c.Params("key")


//http://localhost:8080/user/李四/20/北京/男
router.GET("/user/:name/:age/:address/:sex", func(c *gin.Context) {
    //print all parameters in the URL
    //"[{name 李四} {age 20} {address 北京} {sex 男}]\n"
    c.JSON(http.StatusOK, fmt.Sprintln(c.Params))
})


注:ただし、/user/ または /user にはマッチしません。

訪問先: http://localhost:8080/user/李四/20/北京/男

結果

"[{名前 李斯} {年齢 20} {住所 北京} {性別 男性}] \n"

URLのパスを取得する シングルパラメータ

特定のキーの値を取得するには、gin.ContextオブジェクトのParam(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"),
  })
})


Visit: http://localhost:8080/login/15949629528/123456

結果

{ name: "15949629528", password: "123456" }.

URLに指定されたパラメータを取得する

GET、POSTリクエスト

URLのパス値を取得することと、パラメータを取得することは同じではありません

例えば

http://localhost:8080/login?name=张三&パスワード=123456

リクエストパラメーターname, passwordの値を取得するために、以下のメソッドを使用することができます。

//returns the value of the key in the URL
func (c *Context) Query(key string) string


//GET request
router.GET("/login", func(c *gin.Context) {
  //{ name: "Zhang San", password: "123456" }
  c.JSON(http.StatusOK, gin.H{
    "name": c.Query("name"),
    "password": c.Query("password"),
  })
})

//POST request
router.POST("/login", func(c *gin.Context) {
	//{"name":"Zhang San","password":"123456"}
	c.JSON(http.StatusOK, gin.H{
		"name": c.Query("name"),
		"password": c.Query("password"),
	})
})


訪問先:http://localhost:8080/login?name=张三&パスワード=123456

出力は以下の通りです。

{ name: "Zhang San", password: "123456" }.

で指定されたパラメータのデフォルト値を取得します。

デフォルト値でGET、POSTリクエストを受信する

ginフレームワークはこのことを確かに考えていて gin.Context.DefaultQuery() メソッドは、受け取るパラメータ名と、そのパラメータに値が受け取れなかった場合に設定するデフォルト値を指定することができ、以下のように宣言されています。

func (c *Context) DefaultQuery(key, defaultValue string) string


リクエストがキーを運ばない場合のみ、その時点でデフォルト値が有効になります。それ以外の場合は、デフォルト値は有効になりません。URL内のそのキーの値がNULLであっても、デフォルト値は有効にならず、取得される値はNULLです。

これは、URLのパラメータの値を取得していることに注意してください。

//GET request
router.GET("/user", func(c *gin.Context) {
  //{ name: "Zhang San", password: "123456" }
  c.JSON(http.StatusOK, gin.H{
    "name": c.DefaultQuery("name", "default Zhang San"),
    "password": c.DefaultQuery("password", "default password"),
  })
})
//POST request
router.POST("/user", func(c *gin.Context) {
//{"name":"Zhang San","password":"default password"}
	c.JSON(http.StatusOK, gin.H{
	  "name": c.DefaultQuery("name", "Default Zhang San"),
	  "password": c.DefaultQuery("password", "default password"),
	})
})



訪問先: http://localhost:8080/user?password=

出力は以下の通りです。

{ name: "デフォルトの張さん", password: "デフォルトのパスワード" }.

上記はgolangマイクロサービスフレームワークGinの基本的なルーティングの使用の詳細であり、Ginの基本的なルーティングについての詳細は、スクリプトホーム他の関連記事に注意を払うしてください