don't stop believing

Querystring parameters 본문

Golang/Gin

Querystring parameters

Tongchun 2019. 2. 14. 19:06

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 처리였습니다.


'Golang > Gin' 카테고리의 다른 글

Another example: query + post form  (0) 2019.02.15
Multipart/Urlencoded Form  (1) 2019.02.14
Parameters in path  (0) 2019.02.13
Using GET, POST, PUT, PATCH, DELETE and OPTIONS  (0) 2019.02.13
Gin 설치와 기본 example 확인해 보기  (0) 2019.02.13
Comments