Querystring parameters
url의 ? 뒤에 따라오는 Query String 처리 입니다.
이번 예제는 ? 뒤에 firstname 과 lastname이 map 형태의 parameter로 전달되게 됩니다.
https://github.com/gin-gonic/gin#querystring-parameters
package main import ( "github.com/gin-gonic/gin" ) func setupRouter() *gin.Engine { // Disable Console Color // gin.DisableConsoleColor() r := gin.Default() r.GET("/welcome", welcomeQueryString) return r } // Query string parameters are parsed using the existing underlying request object. // The request responds to a url matching: /welcome?firstname=Jane&lastname=Doe func welcomeQueryString(c *gin.Context) { firstname := c.DefaultQuery("firstname", "Guest") lastname := c.Query("lastname") // shortcut for c.Request.URL.Query().Get("lastname") c.JSON(200, gin.H{"firstname": firstname, "lastname": lastname}) } func main() { r := setupRouter() // Listen and Server in 0.0.0.0:8080 r.Run(":8080") }
서버의 router에 GET method로 /welcome 이라는 경로를 지정했습니다.
handler 함수로는 welcomeQueryString을 지정했습니다.
func welcomeQueryString(c *gin.Context) {
firstname := c.DefaultQuery("firstname", "Guest")
lastname := c.Query("lastname")
c.JSON(200, gin.H{"firstname": firstname, "lastname": lastname})
}
QueryString을 DefaultQuery() 또는 Query() 함수로 받아올수 있습니다. 이름에서도 보이듯이 DefaultQuery() 함수는 parameter의 값이 없을 경우 "Guest"를 기본값으로 가져옵니다.
이제 실행하고 확인해 보겠습니다.
$ go run server.go [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] GET /welcome --> main.welcomeQueryString (3 handlers) [GIN-debug] Listening and serving HTTP on :8080
먼저 정상적으로 아래처럼 firstname과 lastname 모두 보내보겠습니다.
http://localhost:8080/welcome?firstname=tongchun&lastname=kim
정상적으로 json 타입의 값이 확인됩니다.
이번에는 firstname과 lastname 안에 값이 없도록 하겠습니다.
http://localhost:8080/welcome?firstname=&lastname=
결과 값에도 firstname과 lastname이 빈 값으로 들어옵니다.
이번에는 firstname과 lastname을 넘겨주지 않겠습니다. /welcome 까지만 호출해 보겠습니다.
welcomeQueryString() handler 함수에서 정의한것 처럼 firstname의 값이 없을 경우 default로 Guest를 지정하도록 되어 있습니다.
결과값에서도 lastname은 빈 값으로 오고, firstname에는 default값인 Guest가 오고 있습니다.
여기까지 QueryString 처리였습니다.