golang マイクロサービスフレームワーク 基本的なGin 基本的なルーティング 使い方 詳細
概要
ルーティングは、特定の機能を実行するカスタム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の基本的なルーティングについての詳細は、スクリプトホーム他の関連記事に注意を払うしてください
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン